6

別のモデル (B) への ManyToManyField (タイプ) を持つ django モデル (A) があります。概念的には、A のフィールドは「オプションでこのオブジェクトをこれらの値に制限する」です。ManyToManyField にとを設定blank=nullしました。null=Trueこのモデルからオブジェクトを作成し、タイプをいくつかの値に設定しました。すべてが良いです。

「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を使用しています

4

2 に答える 2

14

それclear()がそのためです。

http://docs.djangoproject.com/en/dev/ref/models/relations/#django.db.models.fields.related.RelatedManager.clear

おそらくあなたは探していremove()ますか?

http://docs.djangoproject.com/en/dev/ref/models/relations/#django.db.models.fields.related.RelatedManager.remove

于 2010-10-12T10:09:15.217 に答える
1

それをNoneに設定することは不可能だと思います-M2MがSQLレイヤーにどのように実装されているかを考えてください(これは中間テーブルであり、どこに「None」を書き込むことができますか?)。

別のフラグが必要な場合は、別の列を導入してみませんか?

于 2010-10-12T10:54:53.420 に答える