我有一个django模型(A),它有一个ManyToManyField(类型)到另一个模型(B)。从概念上讲,A中的字段是“可选地将此对象限制为这些值”。我在ManyToManyField上设置了blank=null
和null=True
。我已经从这个模型创建了一个对象,并将类型设置为某些值。一切都很好。
我想将其设置为'null',即禁用它。但是在django shell中,我得到以下错误:
>>> 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
答案 0 :(得分:12)
这就是clear()
的用途。
也许您正在寻找remove()
?
答案 1 :(得分:2)
我认为不可能将其设置为None - 想想如何在SQL层上实现M2M(它是一个中间表,你可以在哪里写“无”)。
如果你需要一个单独的标志,为什么不引入另一个标志?