2016-04-09 26 views
4

Django FormViewとCreateViewの違いは何ですか?Django FormViewとCreateView

私は、FormViewにはModelFormが必要ですが、CreateViewには表示されません。

それ以外の場合は両方ともオブジェクトを作成するのと同じことです。ジャンゴ・ドキュメントから

答えて

4

FormView

フォームを表示するビュー。エラーが発生した場合、 検証エラーのフォームが再表示されます。成功すると、新しいURLにリダイレクトされます。

さまざまな目的で使用でき、オブジェクトの作成に限定されません。良い例は、コンタクトフォームとして使用し、メールをなしで、データベースに作成することです。

CreateView

検証エラー(いずれかがある場合)で フォームを再表示し、オブジェクトを保存し、オブジェクトを作成するためのフォームを表示するビュー。

この汎用ビューの唯一の目的は、オブジェクトを作成することです。ただし、オブジェクトの作成に限定されるものではありません。

FormViewモデルオブジェクトを作成する場合は、CreateViewを使用し、モデルフォームを作成しないことが最善です(ジェネリックビューは繰り返しを減らすためのものです)。

+0

ベストプラクティスに同意しないでください。たとえば、ほとんどの場合、すべてのモデルフィールドを表示する必要はありません。 –

+0

'fields'属性を使って表示したいモデルフィールドだけを含めることができます。 – v1k45

+0

2つのモデルの組み合わせなど、追加のフィールドがある場合は、他のケースも使用されます。 –