Django M2M с большой таблицей

Для меня это было решено путем игнорирования (предположительно) поврежденного кеша с

pip install --no-cache-dir ...

, как описано здесь: https://github.com/pypa/pip/issues/2674

5
задан alj 13 July 2018 в 14:34
поделиться

1 ответ

Все ManyToManyField s имеют модель through, независимо от того, вы сами определяете ее. В вашем случае у него будут поле id, activity и поле retailer. Вы можете получить доступ к таблице с помощью Activity.associated_retailers.through - один «очевидный» способ - просто разоблачить ее как «модель», например

ActivityRetailer = Activity.associated_retailers.through

Теперь вы можете манипулировать этими отношениями, как они были любыми «Django» модель, поэтому вы можете генерировать запросы, такие как

retailer_records_for_activity = ActivityRetailer.objects.filter(activity_id=1234)

... и вы также можете создавать модельные формы моделей (в комплекте с этим флажком delete, если это так) для этих псевдомоделей.

6
ответ дан AKX 17 August 2018 в 12:36
поделиться
  • 1
    Спасибо за это, я не думал об этом. По какой-то причине я не мог заставить эту первую команду работать: объект «ManyToManyField» не имеет атрибута «через». Возможно, это связано с тем, что клиент по-прежнему использует Django 1.1 (несмотря на то, что я хочу его обновить), поэтому я выставил сквозную таблицу в моделях, указав db_table и поля. – alj 16 July 2018 в 12:06
  • 2
    @alj Ой, черт возьми, мой плохой! У меня был неправильный синтаксис для доступа к таблице. Исправлено. В любом случае, рад, что у вас есть все, что нужно, - и вы действительно должны обновить этот Django в какой-то момент ... 1.1 долгое время был EOL. – AKX 16 July 2018 в 14:11
  • 3
    Да, я знаю ... действительно нужно обновление. BTW Activity.associated_retailers.through = Объект 'ReverseManyRelatedObjectsDescriptor' не имеет атрибута 'through' – alj 16 July 2018 в 14:52
  • 4
    Хорошо. Хорошо, что я буду прикрепляться к Django 1.1, тогда он работает на установке 2.x, которую я имею под рукой;) – AKX 16 July 2018 в 14:58
Другие вопросы по тегам:

Похожие вопросы: