与Django中关于通用视图的大量文档一样,我找不到明确描述如何在Django Forms中使用新的基于类的通用视图的文档。
怎么做?
答案 0 :(得分:3)
到目前为止你尝试了什么?基于类的视图是相当新的,文档没有很多例子,所以我认为你需要弄脏并尝试实验!
如果要更新现有对象,请尝试使用UpdateView
。查看它使用的mixins(例如ModelFormMixin
,SingleObjectMixin
,FormMixin
),了解您可以/必须覆盖哪些方法。
答案 1 :(得分:2)
使用基于类视图的模型表单的最简单方法是传入模型并在url中保留slug / pk,在这种情况下,您不需要编写任何视图代码。
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,然后将form_class传递给url
url(r'^myurl/$', CreateView.as_view(form_class=myform))
此方法允许您为表单定义表单函数和Meta属性。