読者です 読者をやめる 読者になる 読者になる

sushi アプリを例にしたdjango manytomany フィールドの例(書きかけ)

sushi アプリを例にしたdjango manytomany フィールドの例

>>> from sushi.models import Tagcloud, Nigiri

# 卵をつくります
>>> t0=Tagcloud()
>>> t0.keyword=u'たまご'
>>> t0.save()

# 握りを作ります. 先にmanytomany 以外の必須フィールドを作成し、save()します。
>>> n0 = Nigiri()
>>> n0.name = u”卵巻き"
>>> n0.value = 300
>>> n0.save()

# 保存するより前にmanytomany フィールドを追加するとエラー吐きます
>>> n1.name='だしまき'
>>> n1.tagcloud.add(t0)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/Library/Python/2.7/site-packages/django/db/models/fields/related.py", line 827, in __get__
    through=self.field.rel.through,
  File "/Library/Python/2.7/site-packages/django/db/models/fields/related.py", line 524, in __init__
    (instance, source_field_name))
ValueError: "<Nigiri: だしまき>" needs to have a value for field "nigiri" before this many-to-many relationship can be used.
>>> s1.save()
>>> s1.tagcloud.add(t1)

# 具材を保存します。
>>> n0.guzai.add(t0)
>>> n0.guzai.add(Tagcloud.objects.get(keyword=u"こめ")


[ x.keyword for x in Tagcloud.objects.all() if x.keyword in centence ]