Django - 模型中的ManyToManyField,如何设置为null?

6 投票
2 回答
8533 浏览
提问于 2025-04-16 05:21

我有一个Django模型(A),它有一个多对多字段(types),这个字段连接到另一个模型(B)。简单来说,这个字段的意思是“可以选择性地限制这个对象的值”。我在这个多对多字段上设置了 blank=nullnull=True。我已经根据这个模型创建了一个对象,并给types设置了一些值,一切都很好。

现在我想把它设置为'null',也就是禁用这个字段。但是在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 个回答

1

我觉得把它设置为None是不太可能的。想想在SQL层面上,M2M(多对多关系)是怎么实现的。它是一个中间表,你要把“None”写到哪里去呢?

如果你需要一个单独的标记,为什么不增加一个新的列呢?

撰写回答