web-dev-qa-db-ja.com

ManyToManyFieldをどのように反復できますか?

簡単な質問ですが、答えが見つかりません。

ManyToManyフィールドを持つモデルがあります。

class Stuff(models.Model):
  things = models.ManyToManyField(Thing)

それから私はこれをしたい別の関数で:

myStuff = Stuff.objects.get(id=1)
for t in myStuff.things.all:
  # ...

しかし、それは私に与えています:

TypeError: 'instancemethod' object is not iterable

ManyToManyFieldをどのように反復できますか?

41
Goro

allの後に_()_を追加してみてください:myStuff.things.all()

82
Abid A

ManyToManyFieldには、基本的なDjangoクラスとは異なる種類のマネージャーがあるようです。ここでソースを見ると、 https://github.com/Django/django/blob/master/ Django/db/models/fields/related_descriptors.py#L821 、関連オブジェクト参照のタプルを含むように見えるrelated_valフィールドを探しているようです。

0
jsh

Abid Aが既に回答したように、括弧()が欠落しています

for t in myStuff.things.all():
    print t.myStuffs.all()
0
niko.makela