【问题标题】:Django - ManyToManyField in a model, setting it to null?Django - 模型中的ManyToManyField,将其设置为null?
【发布时间】:2010-10-12 10:07:49
【问题描述】:

我有一个 django 模型 (A),它有一个 ManyToManyField (types) 到另一个模型 (B)。从概念上讲,A 中的字段是“可选地将此对象限制为这些值”。我在 ManyToManyField 上设置了 blank=nullnull=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

我可以成功地将其设置为[](空列表),但我想将其设置为无,因为我想使用无作为信号/标志。这在 Django 模型中可行吗?

我正在使用 Django 1.1

【问题讨论】:

    标签: python django django-models manytomanyfield


    【解决方案1】:

    【讨论】:

    • clear() 看起来是一个好的开始。做clear()后,字段是设置为[]还是None?
    • @Rory 两者都不是。它设置为 ManyRelatedManager 对象。
    【解决方案2】:

    我认为不可能将其设置为 None - 想想 M2M 在 SQL 层上是如何实现的(它是一个中间表,你可以在哪里写你的“None”?)。

    如果您需要单独的标志,为什么不引入另一列?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-29
      • 2020-07-03
      • 2017-11-12
      • 1970-01-01
      • 1970-01-01
      • 2021-01-22
      • 2016-11-15
      • 2010-10-07
      相关资源
      最近更新 更多