Django の汎用ビューに関する多くのドキュメントと同様に、Django フォームで新しいクラスベースの汎用ビューを使用する方法を明示的に説明しているドキュメントを見つけることができません。
それはどのように行われますか?
Django の汎用ビューに関する多くのドキュメントと同様に、Django フォームで新しいクラスベースの汎用ビューを使用する方法を明示的に説明しているドキュメントを見つけることができません。
それはどのように行われますか?
これまでに何を試しましたか?クラスベースのビューはかなり新しく、ドキュメントには多くの例がありません。そのため、手を汚して実験する必要があると思います!
既存のオブジェクトを更新する場合は、 を使用してみてくださいUpdateView
。使用するミックスイン ( ModelFormMixin
、SingleObjectMixin
、 などFormMixin
) を見て、オーバーライドできる/オーバーライドしなければならないメソッドを確認します。
幸運を!
クラス ベースのビューでモデル フォームを使用する最も簡単な方法は、モデルを渡し、スラッグ/pk を URL でキャプチャしたままにすることです。この場合、ビュー コードを記述する必要はありません。
url(r'^myurl/$', CreateView.as_view(model=mymodel))
#Creates a model form for model mymodel
url(r'^myurl/(?<pk>\w+)/$', UpdateView.as_view(model=mymodel))
#Creates a model form for model mymodel and updates the object having pk as specified in url
url(r'^myurl/(?<slug>\w+)/$', DeleteView.as_view(model=mymodel, slug_field="myfield"))
#Creates a model form for model mymodel and deletes the object denoted by mymodel.objects.get(my_field=slug)
メソッドをオーバーライドして、より複雑なロジックを取得することもできます。モデル オブジェクトの代わりにクエリセットを渡すこともできます。
別の方法は、forms.py でモデルフォームを作成し、form_class を URL に渡すことです。
url(r'^myurl/$', CreateView.as_view(form_class=myform))
このメソッドを使用すると、フォーム機能とフォームのメタ属性を定義できます。