Versuchen
matches = [val for val in Store.attribute_answers.all() if val in WishList.attribute_answers.all()]
Beachten Sie die Klammer am Ende von WishList.attribute_answers.all()
. Durch Hinzufügen der Klammer wird die aufgerufenall
Funktion aufgerufen, eine Iterable zurückzugeben.
Wenn Sie die Klammer einfügen, sagen Sie "Geben Sie mir alle Werte in den Filialantworten, solange dieser Wert auch in den Antworten auf den Wunschzettel enthalten ist". Ohne die Klammer fragen Sie nach allen Werten aus den Antworten des Geschäfts, die sich auch in der all
Funktion befinden, was bedeutungslos ist. Die all-Funktion ist keine iterable (es ist eine Funktion, die eine iterable zurückgibt)
TL; DR
Für alle, die das Lesen von Code in Fragen als TL; DR finden
Anstatt
query_set.many_to_many
du solltest benutzen
query_set.many_to_many.all()
quelle
Hier ist busines_type im Profilmodell Foreign_key
quelle
Ich stelle diese Frage immer wieder, wenn dieses Problem auftritt. Insbesondere, wenn versucht wird, eine Vielzahl von Funktionen zu durchlaufen.
Als Vorlage können Sie Folgendes tun:
quelle