it-swarm.com.de

Wie kann ich über ManyToManyField iterieren?

Eine einfache Frage und trotzdem finde ich keine Antwort darauf.

Ich habe ein Modell mit einem ManyToMany-Feld:

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

dann in einer anderen Funktion möchte ich das tun:

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

Aber das gibt mir:

TypeError: 'instancemethod' object is not iterable

Wie kann ich ein manyToManyField durchlaufen?

31
Goro

Versuchen Sie, den () nach all: myStuff.things.all() hinzuzufügen.

71
Abid A

ManyToManyField scheint eine andere Art von Manager zu haben als Ihre grundlegende Django-Klasse. Wenn Sie hier auf die Quelle schauen, https://github.com/Django/django/blob/master/Django/db/models/fields/related_descriptors.py#L821 , scheint es, dass Sie nach dem Feld related_val suchen scheint das Tupel der verwandten Objektverweise zu enthalten.

0
jsh