मैंने एक मॉडलफ़ॉर्म क्लास बनाया है जो सक्षम हैडेटाबेस प्रविष्टियाँ बनाएँ और संपादित करें। नई प्रविष्टियाँ बनाना अच्छी तरह से काम करता है, हालाँकि, मुझे नहीं पता कि मौजूदा प्रविष्टि को संपादित / अद्यतन करने के लिए मॉडलफ़ॉर्म का उपयोग कैसे किया जाए। मैं एक डेटाबेस उदाहरण के साथ एक ModelForm का उपयोग कर इंस्टेंट कर सकता हूं:
form = MyModelForm(instance=MyModel.objects.get(pk=some_id))
हालाँकि, जब मैं इसे एक टेम्प्लेट में पास करता हूं और किसी फ़ील्ड को संपादित करता हूं और फिर इसे सहेजने का प्रयास करता हूं, तो मैं "some_id" को अपडेट करने के बजाय एक नया डेटाबेस प्रविष्टि बनाता हूं?
Edit1: यह मेरा विचार है
def editData(request):
if request.method == "POST":
form = MyModelForm(request.POST, request.FILES)
if form.is_valid():
editedEntry = form.save() # <-- creates new entry, instead of updating
उत्तर:
उत्तर № 1 के लिए 42याद रखें कि आपको अभी भी उपयोग करने की आवश्यकता है instance
पैरामीटर जब आप पोस्ट पर तुरंत।
instance = MyModel.objects.get(whatever)
if request.method == "POST":
form = MyModelForm(request.POST, instance=instance)
...
else:
form = MyModelForm(instance=instance)
उत्तर № 2 के लिए 1
भी संभव है और थोड़ा छोटा:
instance = MyModel.objects.get(whatever)
form = MyModelForm(request.POST or None, instance=instance)
...