/ / Django: मौजूदा डेटाबेस प्रविष्टि - django, django- टेम्पलेट्स, django- रूपों को संपादित करने के लिए ModelForm का उपयोग करना

Django: मौजूदा डेटाबेस प्रविष्टि - django, django- टेम्पलेट्स, django- रूपों को संपादित करने के लिए ModelForm का उपयोग करना

मैंने एक मॉडलफ़ॉर्म क्लास बनाया है जो सक्षम हैडेटाबेस प्रविष्टियाँ बनाएँ और संपादित करें। नई प्रविष्टियाँ बनाना अच्छी तरह से काम करता है, हालाँकि, मुझे नहीं पता कि मौजूदा प्रविष्टि को संपादित / अद्यतन करने के लिए मॉडलफ़ॉर्म का उपयोग कैसे किया जाए। मैं एक डेटाबेस उदाहरण के साथ एक 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)
...