2

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

但是,如果我使用DetailViewfromdjango.views.generic我没有创建表单,我什至不需要forms.py,DetailView正在为我做这件事。

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

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

{% crispy form %}

将工作。

澄清一下,我正在尝试学习如何使用 Django 基于类的通用视图。像默认视图。没有我要声明的表格。我创建一个视图

from django.views.generic.detail import DetailView

class MyView(DetailView):
    model=MyModel

并用

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

我的模板接收模型实例作为对象。当我没有表格时,如何将它与脆皮表格结合起来?

我知道如何创建自己的表单并crispy在我的模板中使用,但我想使用通用 CBV 的 DRY 组合来节省编写不必要的表单,而不是为我做所有这些脆样式的工作。

如果我创建一个表单,那么我肯定会替换通用 CBV 所做的工作,并且我必须编写我自己的所有响应处理。如果我理解正确,那就是使用泛型的火车。

4

1 回答 1

1

您可以覆盖详细视图中的“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”关键字

这是很多工作,所以也许这不是这项工作的正确通用视图。你想要完成什么?

于 2014-01-03T13:06:29.690 回答