Djangoのジェネリックビューに関する多くのドキュメントと同様に、Djangoフォームで新しいクラスベースのジェネリックビューを使用する方法を明示的に記述したドキュメントは見つかりません。DjangoクラスベースのジェネリックビューとModelForm
どうやってですか?
Djangoのジェネリックビューに関する多くのドキュメントと同様に、Djangoフォームで新しいクラスベースのジェネリックビューを使用する方法を明示的に記述したドキュメントは見つかりません。DjangoクラスベースのジェネリックビューとModelForm
どうやってですか?
これまでに何を試しましたか?クラスベースのビューはかなり新しく、ドキュメントにはたくさんの例がないので、手を汚して実験する必要があると思います!
既存のオブジェクトを更新する場合は、UpdateView
を試してみてください。使用するミックスイン(たとえばModelFormMixin
、SingleObjectMixin
、FormMixin
)を見て、どのメソッドをオーバーライドできるか確認します。
幸運を祈る!
クラスベースのビューでモデルフォームを使用する最も簡単な方法は、モデルを渡して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渡すことです。
クラス「カテゴリ」に「エントリ」を追加するには、ジェネリックバージョンのcreateをどのように使用しますか? Model.CharField()= item.ManyToManyField(Entry) – Bryce
url(r '^ myurl/$'、CreateView.as_view(model = Category、template_name = "template.html"))) –
私は必要なものがUpdateViewになります。私がlinke dotを正しく理解していれば、私のフォームに別のサブクラスを書く必要はありません。私の問題は、私がDjangoをかなり新しくしたことです。実際の作業例が実際に私を助けます。しかし、リンクのおかげで。 – pwalsh