閉鎖を検討することをお勧めします。
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)
、あなたにも、より複雑な例については、このアプローチを使用することができます。
私は知っている(ありがとうとにかく;))。私がしようとしているのは、このために新しいオブジェクトを保存するためのコードを書く必要がないため、汎用ビューを使用することです。 Djangoのコードは完全にテストされているので、可能な限り、自分のコードの代わりに使用する方が好きです。 –