如何将Django脆表单与通用DetailView结合使用



如果我根据自己的表单定义自己的视图,那么我可以将我的脆皮表单助手添加到Form类定义中。

但如果我使用django.views.generic中的DetailView,我就不是在创建表单,我甚至不需要forms.pyDetailView是为我做的。

在我的模板中,我正在被传递对象。

我无法理解如何访问Form来添加帮助程序并设置其属性,以及如何将正确的东西传递给我的模板,以便

{% crispy form %}

将起作用。

为了澄清,我正在尝试学习如何使用Django的基于类的通用视图。类似于DefaultView。我没有申报任何表格。我创建一个视图作为

from django.views.generic.detail import DetailView
class MyView(DetailView):
model=MyModel

并使用进行渲染

url(...... ,MyView.as_view()...)

我的模板接收一个作为对象的模型实例。当我没有形态的时候,我该如何将其与脆皮形态结合起来?

我知道如何创建自己的表单并在模板中使用crispy,但我想使用通用CBV的DRY组合来避免编写不必要的表单,而不是为我做所有风格简洁的工作。

如果我创建了一个表单,那么我肯定会取代通用CBV所做的工作,我必须自己编写所有的响应处理。如果我理解正确的话,这就是使用泛型的训练。

您可以覆盖detailview中的"get_context_data"方法以包含表单。您应该考虑到DetailView是一个显示视图,所以表单在这里没有意义。无论如何:看看文档中的文章示例

你可以做一些类似的事情:

class MyDetailView(DetailView):
model = MyModel
def get_context_data(self, **kwargs):
context = super(MyDetailView, self).get_context_data(**kwargs)
context['form'] = MyForm() 
return context

表单不会加载任何数据,因此您可以使用"initial"关键字

这是一项艰巨的工作,所以也许这不是适合这份工作的通用视图。。你想完成什么?

最新更新