如何迭代ManyToManyField?

时间:2012-03-05 22:52:54

标签: python database django orm model

一个简单的问题,但我找不到答案。

我有一个带有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?

3 个答案:

答案 0 :(得分:73)

尝试在()之后添加allmyStuff.things.all()

答案 1 :(得分:0)

ManyToManyField似乎与基本的Django类有不同的Manager。看一下这里的源代码https://github.com/django/django/blob/master/django/db/models/fields/related_descriptors.py#L821,看来你正在寻找的related_val字段似乎包含了相关对象引用的元组。

答案 2 :(得分:-1)

像Abid A已经回答过,你缺少括号()

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