Ответ 1
Попробуйте добавить ()
после all
: myStuff.things.all()
Простой вопрос, и все же я не могу найти для него ответа.
У меня есть модель с полем 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
Как я могу перебирать многотысячный экран?
Попробуйте добавить ()
после all
: myStuff.things.all()
У ManyToManyField, похоже, есть другой вид Менеджера, чем ваш основной класс Django. Если посмотреть на источник здесь, https://github.com/django/django/blob/master/django/db/models/fields/related_descriptors.py#L821, похоже, вы ищете поле related_val, которое, как представляется, содержит кортеж ссылок связанных объектов.
Как и Abid A уже ответил, у вас отсутствуют скобки()
for t in myStuff.things.all():
print t.myStuffs.all()