मैंने इसे एक अच्छा फॉर्म बनाया है, और इसे संभालने के लिए एक बड़ा जटिल 'एड' फ़ंक्शन बनाया है। यह इस तरह से शुरू होता है ...Django एड फॉर्म के आधार पर फॉर्म संपादित करें?
def add(req):
if req.method == 'POST':
form = ArticleForm(req.POST)
if form.is_valid():
article = form.save(commit=False)
article.author = req.user
# more processing ...
अब मैं वास्तव में नहीं है edit()
विधि में सभी कि कार्यक्षमता डुप्लिकेट करना चाहते हैं, तो मैं edit
लगा ठीक उसी टेम्पलेट का उपयोग कर सकता है, और हो सकता है सिर्फ एक id
क्षेत्र में जोड़ने के लिए फॉर्म add
फ़ंक्शन जानता था कि यह संपादन क्या कर रहा था। लेकिन इस
- मैं कहां से
add
समारोह मेंarticle.id
स्थापित करेगा साथ एक जोड़ी समस्याओं है? इसेform.save
के बाद होना चाहिए क्योंकि वह लेख कहां बनाया गया है, लेकिन यह कभी भी उस तक पहुंच नहीं पाएगा, क्योंकि अद्वितीय बाधाओं के कारण फ़ॉर्म अमान्य है (जब तक उपयोगकर्ता ने सबकुछ संपादित नहीं किया हो)। मैं सिर्फis_valid
चेक को हटा सकता हूं, लेकिन फिरform.save
इसके बजाय विफल रहता है। - यदि फॉर्म वास्तव में अमान्य है, तो फ़ील्ड जिसे मैंने गतिशील रूप से संपादन फ़ंक्शन में जोड़ा है, संरक्षित नहीं है।
तो मैं इससे कैसे निपटूं?
हाँ, यह एक 'ModelForm' है। मुझे अन्य कारणों से 'प्रतिबद्ध = गलत 'की आवश्यकता थी। एक लेख सामग्री के पूरे समूह (कुछ एम 2 एम संबंधों सहित) से बना है। मैं नहीं सोचता * यह 'इंस्टेंस' के साथ काम करना चाहता था। हालांकि मैं इसे आज़मा दूंगा। – mpen
उस स्थिति में, मैं सुझाव के बजाय फॉर्म में एम 2 एम संबंध (एट अल) बचत/सत्यापन डालने का सुझाव दूंगा ... या तो सहेजने की विधि को ओवरराइड करें या संभवतः फॉर्मेट्स में देखें। मुझे लगता है कि यह इस बात पर निर्भर करता है कि आप किसके साथ काम कर रहे हैं ... –
महान और गहन उदाहरण! धन्यवाद! मैंने इस सवाल के समाधान के मुकाबले ज्यादा सीखा। – hobbes3