2012-03-05 21 views
30

एक साधारण सवाल है और फिर भी मुझे इसके लिए कोई जवाब नहीं मिल रहा है।मैं कईToManyField पर कैसे पुन: प्रयास कर सकता हूं?

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

तो एक अलग समारोह में मैं ऐसा करना चाहते हैं:

मैं एक ManyToMany क्षेत्र के साथ एक मॉडल है

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

लेकिन वह मुझे दे रहा है:

TypeError: 'instancemethod' object is not iterable 

मैं कई टोमैनफिल्ड पर कैसे पुन: प्रयास कर सकता हूं?

+0

"instancemethod ऑब्जेक्ट" आपको यह बंद कर देना चाहिए था कि यह एक विधि है (कोष्ठक की आवश्यकता है), एक पुनरावृत्ति नहीं। – mpen

उत्तर

64

()all के बाद जोड़ने का प्रयास करें: myStuff.things.all()

+13

टेम्पलेट में 'myStuff.things.all' का उपयोग करें (() को छोड़कर) – Nathaniel

-2

तरह आबिद एक पहले से ही उत्तर दिया, आप याद कर रहे हैं कोष्ठक()

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

फिर आपने इसे दोहराया क्यों? और आपका उदाहरण टूटा हुआ है ... आप प्रिंट करने की कोशिश कर रहे हैं (अंत में एक कोलन है)? – mpen

+1

तब तक मुझे यहां टिप्पणी लिखने की अनुमति नहीं थी और मेरा उद्देश्य उन सभी चीजों को प्रिंट करने के लिए एक वास्तविक कामकाजी उदाहरण दिखाना था जो आप दिखाने में सक्षम नहीं थे। एक कोलन वहां है क्योंकि पाइथन में फॉर-लूप को हमेशा एक की आवश्यकता होती है! –

+0

मेरा मानना ​​है कि मैं आपके द्वारा संपादित किए गए अतिरिक्त कोलन का जिक्र कर रहा था। लेकिन काफी उचित ... मुझे पूरा उदाहरणों का पालन करना आसान लगता है। – mpen

0

ManyToManyField अपने बुनियादी Django वर्ग से प्रबंधक की एक अलग तरह की है लगता है। यहां स्रोत को देखकर, https://github.com/django/django/blob/master/django/db/models/fields/related_descriptors.py#L821, ऐसा लगता है कि आप संबंधित_val फ़ील्ड की तलाश में हैं, जिसमें संबंधित ऑब्जेक्ट संदर्भों का टुपल शामिल है।

+0

आह मैंने गलती की, एबीड ए का जवाब वास्तव में काम करता है। : $ – jsh

संबंधित मुद्दे

 संबंधित मुद्दे