答えて

4

これまでに何を試しましたか?クラスベースのビューはかなり新しく、ドキュメントにはたくさんの例がないので、手を汚して実験する必要があると思います!

既存のオブジェクトを更新する場合は、UpdateViewを試してみてください。使用するミックスイン(たとえばModelFormMixinSingleObjectMixinFormMixin)を見て、どのメソッドをオーバーライドできるか確認します。

幸運を祈る!

+0

私は必要なものがUpdateViewになります。私がlinke dotを正しく理解していれば、私のフォームに別のサブクラスを書く必要はありません。私の問題は、私がDjangoをかなり新しくしたことです。実際の作業例が実際に私を助けます。しかし、リンクのおかげで。 – pwalsh

2

クラスベースのビューでモデルフォームを使用する最も簡単な方法は、モデルを渡してslug/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でのModelFormを作成し、

url(r'^myurl/$', CreateView.as_view(form_class=myform)) 

としてURLにform_class渡すことです。

+0

クラス「カテゴリ」に「エントリ」を追加するには、ジェネリックバージョンのcreateをどのように使用しますか? Model.CharField()= item.ManyToManyField(Entry) – Bryce

+0

url(r '^ myurl/$'、CreateView.as_view(model = Category、template_name = "template.html"))) –

関連する問題