Django - ManyToManyField в модели, устанавливая его на ноль? - PullRequest
5 голосов
/ 12 октября 2010

У меня есть модель Django (A), которая имеет ManyToManyField (типы) для другой модели (B). Концептуально поле в A «необязательно ограничивает этот объект этими значениями». Я установил blank=null и null=True на ManyToManyField. Я создал объект из этой модели и установил типы для некоторых значений. Все хорошо.

Я хочу установить его на «ноль», то есть отключить его. Но в оболочке django я получаю следующие ошибки:

>>> o.types.all()
[<Type: foo>, <Type: bar>]
>>> o.types = None
File "<console>", line 1, in <module>
File ".../virtualenv/lib/python2.6/site-packages/django/db/models/fields/related.py", line 627, in __set__
manager.add(*value)
TypeError: add() argument after * must be a sequence, not NoneType

Я могу успешно установить его на [] (пустой список), но я бы хотел установить его на None, поскольку я хочу использовать None в качестве сигнала / флага. Возможно ли это в моделях Django?

Я использую Django 1.1

Ответы [ 2 ]

12 голосов
/ 12 октября 2010
2 голосов
/ 12 октября 2010

Я не думаю, что возможно установить его на None - подумайте о том, как M2M реализован на уровне SQL (это промежуточная таблица, куда вы можете записать свое «None»?).

Если вам нужен отдельный флаг, почему бы не ввести еще один столбец?

...