आप एक बंद करने पर विचार करना चाह सकते हैं।
from django.forms import ModelForm
from django.views.generic.create_update import create_object, update_object
def make_foo_form(request):
class FooForm(ModelForm):
class Meta:
model = Foo
fields = ['foo', 'bar']
def save(self, commit=True):
f = super(FooForm, self).save(commit=False)
if not f.pk: f.user = request.user
if commit: f.save()
return f
return FooForm
def create_foo(request):
FooForm = make_foo_form(request)
return create_object(form_class=FooForm)
वहाँ के बाद से आप प्रत्येक अनुरोध पर ModelForm वस्तु बनाने के लिए की जरूरत है कुछ अक्षमता यहाँ, है, लेकिन यह आप सामान्य दृश्य में कार्यक्षमता इंजेक्षन करने की अनुमति देता है।
आपको यह तय करने की आवश्यकता है कि फ़ॉर्म निर्माण के लिए अतिरिक्त जटिलता दृश्य पक्ष पर सादगी बनाए रखने के लायक है या नहीं।
def update_foo(request, object_id):
FooForm = make_foo_form(request)
return update_object(form_class=FooForm, object_id=object_id)
जाहिर है, आप के रूप में अच्छी अधिक जटिल मामलों के लिए इस दृष्टिकोण का उपयोग कर सकते हैं:
यहाँ एक लाभ, हालांकि, कि यह भी व्यावहारिक रूप से बिना किसी अतिरिक्त प्रयास के साथ अद्यतन मामले के साथ काम करता है।
स्रोत
2009-12-01 22:21:53
मुझे पता है (वैसे भी धन्यवाद;))। मैं जो करने की कोशिश कर रहा हूं वह इस के लिए एक सामान्य दृश्य का उपयोग करना है, इसलिए मुझे नई वस्तु को सहेजने के लिए कोड लिखना नहीं है। Django कोड का पूरी तरह से परीक्षण किया जाता है, जब भी यह संभव हो, मैं इसे अपने कोड के बजाय उपयोग करना पसंद करता हूं। –