7

与 Django 中有关通用视图的许多文档一样,我找不到明确描述如何将新的基于类的通用视图与 Django 表单一起使用的文档。

它是如何完成的?

4

2 回答 2

3

你试过什么了?基于类的视图非常新,文档没有很多示例,所以我认为您需要亲自动手并进行实验!

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

祝你好运!

于 2011-07-13T21:57:52.023 回答
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 中创建一个模型表单,然后将 form_class 传递给 url

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

此方法允许您定义表单功能以及表单的元属性。

于 2012-03-29T21:29:25.607 回答