如果我根据自己的表单定义自己的视图,那么我可以将我的crispy-forms帮助器添加到Form类定义中。
但如果我使用DetailView
中的django.views.generic
我没有创建表单,我甚至不需要forms.py
,DetailView
正在为我做这件事。
在我的模板中,我正在传递对象。
我无法理解如何访问表单以添加帮助程序并设置其属性,以及如何将正确的内容传递给我的模板以便
{% crispy form %}
会奏效。
澄清一下,我正在尝试学习如何使用Django基于通用类的视图。像DefaultView一样。我没有宣布任何表格。我创建了一个视图
from django.views.generic.detail import DetailView
class MyView(DetailView):
model=MyModel
并使用
进行渲染url(...... ,MyView.as_view()...)
我的模板接收模型实例作为对象。当我没有表格时,如何将其与脆形式相结合?
我知道如何创建自己的表单并在我的模板中使用crispy
,但我想使用通用CBV的DRY组合来保存编写不必要的表单,而不是为我做所有的工作。
如果我创建一个表单,那么我肯定要替换通用CBV所做的工作,我必须编写所有自己的响应处理。如果我理解正确,那就是使用仿制药的火车。
答案 0 :(得分:1)
您可以覆盖详细信息视图中的“get_context_data”方法以包含表单。 您应该考虑到DetailView是一个 - 显示 - 视图,因此表单在这里没有意义。 无论如何: 查看docs
中的文章示例您可以执行以下操作:
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”关键字
这是很多工作,所以也许这不是正确的工作通用视图。你想要完成什么?