2009-10-09 11 views
23

ऐसा लगता है कि यह मृत सरल होना चाहिए, इसलिए मुझे कुछ याद आना चाहिए। मैं सिर्फ अपने मॉडल उदाहरण में किसी फ़ील्ड के मान को नाम से सेट करना चाहता हूं। मान लें कि मेरे पास है:नाम से django मॉडल फ़ील्ड कैसे सेट करें?

class Foo(Model): 
    bar = CharField() 

f = Foo() 

मैं क्षेत्र के उपयोग से नहीं, नाम से बार का मान सेट करना चाहता हूं। तो कुछ की तरह:

f.fields['bar'] = 'BAR" 

बजाय

f.bar = 'BAR' 

मैं setattr की कोशिश की है, लेकिन यह डेटाबेस में मूल्य मौजूद नहीं होता। मैंने _meta.fields के माध्यम से जाने का भी प्रयास किया लेकिन रास्ते में विभिन्न त्रुटियां मिलीं।

उत्तर

48

यदि आप सेटैटर के माध्यम से मान संशोधित करते हैं, तो आपको इसे संशोधित करने के बाद मॉडल को सहेजना याद रखना होगा। मुझे अतीत में काट दिया गया है जहां मैंने मूल्यों को बदल दिया लेकिन मॉडल को सहेजना भूल गया, और एक ही परिणाम मिला।

setattr(f, 'bar', 'BAR') 
f.save() 
+10

DOH! हाँ, मैं बचाना भूल गया। मैं अब शर्म में छिप जाऊंगा ... –

13

हमें और कोड देखना पड़ सकता है।

setattr(f, 'bar', 'BAR') 

काम करना चाहिए क्योंकि यह Django आंतरिक रूप से करता है।

सुनिश्चित करें कि आप 'सेव' भी कॉल कर रहे हैं।

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