Подтвердить что ты не робот

Как я могу перебирать 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

Как я могу перебирать многотысячный экран?

4b9b3361

Ответ 1

Попробуйте добавить () после all: myStuff.things.all()

Ответ 2

У ManyToManyField, похоже, есть другой вид Менеджера, чем ваш основной класс Django. Если посмотреть на источник здесь, https://github.com/django/django/blob/master/django/db/models/fields/related_descriptors.py#L821, похоже, вы ищете поле related_val, которое, как представляется, содержит кортеж ссылок связанных объектов.

Ответ 3

Как и Abid A уже ответил, у вас отсутствуют скобки()

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