2010-10-19 9 views
23

को सहेजे बिना फ़ॉर्म से मॉडल उदाहरण प्राप्त करें मान लें कि मेरे पास एक django मॉडलफॉर्म है जिसे मैं सहेजने से पहले संपादित करना चाहता हूं।Django:

उदाहरण के लिए,

बजाय

इस

model_instance = form.save() 

मैं इस

model_instance = form.get_model() 
model_instance.edit() #say add a new field which is not available on form 
model_instance.save() 

उत्तर

32
model_instance = form.save(commit=False) 
की तरह कुछ करना चाहते हैं 0

आप डीबी को सहेजे बिना मॉडल की एक वस्तु वापस आ जाएगी

आप तो कुछ फ़ील्ड का मान जो फार्म

model_instance.some_field = value 
model_instance.save() 
+0

मैं बस इसे कहीं और पाया और खुद को जवाब जोड़ने के लिए मेरे रास्ते पर था। :) –

+3

यदि आप 'form.save (commit = गलत) का उपयोग करते हैं, तो django कई से अधिक संबंधों को सहेज नहीं पाएगा। उदाहरण को स्वयं सहेजने के बाद आपको 'form.save_m2m()' को कॉल करना होगा। [Django ModelForms # सहेजें] (https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#the-save-method) –

+3

धन्यवाद। मुझे क्या उलझन में था कि मैं form.instance को संदर्भित करना चाहता था, लेकिन यह केवल सहेजने के बाद ही उपलब्ध है()। – trojjer

3

इसके अलावा पर उपलब्ध नहीं है जोड़ सकते हैं:

model_instance = form.instance 
# edit 
model_instance.save() 
+0

2016 तक यह इस के लिए सबसे अच्छा अभ्यास है? –