2009-12-21 16 views
125

मैं अपने रूपों में कुछ फ़ील्ड के लिए get_or_create का उपयोग करने की कोशिश कर रहा हूं, लेकिन जब मैं ऐसा करने का प्रयास करता हूं तो मुझे 500 त्रुटि मिल रही है।get_or_create का उपयोग करने के लिए सही तरीका?

लाइनों में से एक इस तरह दिखता है:

customer.source = Source.objects.get_or_create(name="Website") 

त्रुटि मैं ऊपर कोड के लिए मिलता है:

Cannot assign "(<Source: Website>, False)": "Customer.source" 
    must be a "Source" instance. 
+6

संपादन, डोमिनिक क्यों? त्रुटि संदेश उपयोगी था। – Tobu

उत्तर

211

प्रलेखन get_or_create से:

# get_or_create() a person with similar first names. 
>>> p, created = Person.objects.get_or_create(first_name='John', last_name='Lennon', defaults={'birthday': date(1940, 10, 9)}) 

# get_or_create() didn't have to create an object. 
>>> created 
False 

यह एक चर के बजाय, लगता है कि आपने एक टपल में लौटने जाने की जरूरत है, इस तरह कार्य करें:

customer.source,created = Source.objects.get_or_create(name="Website") 
24

get_or_create एक टपल देता है।

customer.source, created = Source.objects.get_or_create(name="Website") 
+12

या, यदि आपको बूलियन ध्वज की परवाह नहीं है: 'customer.source = Source.objects.get_or_create (name =" वेबसाइट ") [0]' – mipadi

3

मुद्दा आप सामना कर रहे हैं get_or_create की एक दस्तावेजी विशेषता है।

"डिफ़ॉल्ट" के अलावा कीवर्ड तर्कों का उपयोग करते समय get_or_create का वापसी मान एक उदाहरण है। यही कारण है कि यह आपको रिटर्न मूल्य में माता-पिता दिखा रहा है।

आप सही मूल्य प्राप्त करने के लिए customer.source = Source.objects.get_or_create(name="Website")[0] का उपयोग कर सकते हैं।) http://docs.djangoproject.com/en/dev/ref/models/querysets/#get-or-create-kwargs

8

get_or_create ( एक टपल देता है,

customer.source, created = Source.objects.get_or_create(name="Website") 

यहाँ बनाया => है एक बूलियन मान, या नहीं बना है

:

यहाँ प्रलेखन के लिए एक कड़ी है

ग्राहक.source => get_or_create() मुझे एक वस्तु है Thod। , http://docs.djangoproject.com/en/dev/ref/models/querysets/#get-or-create-kwargs

2

@Tobu जवाब और @mipadi टिप्पणी के बाद एक और अधिक pythonic तरह से, यदि बनाया ध्वज में कोई दिलचस्पी नहीं है, मैं का प्रयोग करेंगे::

यहाँ प्रलेखन के लिए एक कड़ी है

customer.source, _ = Source.objects.get_or_create(name="Website") 
संबंधित मुद्दे