Django基于类的通用视图和模型形式

时间:2011-07-13 19:23:21

标签: django django-forms django-views django-generic-views django-class-based-views

与Django中关于通用视图的大量文档一样,我找不到明确描述如何在Django Forms中使用新的基于类的通用视图的文档。

怎么做?

2 个答案:

答案 0 :(得分:3)

到目前为止你尝试了什么?基于类的视图是相当新的,文档没有很多例子,所以我认为你需要弄脏并尝试实验!

如果要更新现有对象,请尝试使用UpdateView。查看它使用的mixins(例如ModelFormMixinSingleObjectMixinFormMixin),了解您可以/必须覆盖哪些方法。

祝你好运!

答案 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属性。