2

Django 文档在基于类的通用视图中提到 DetailView 由以下各项组成:View、SingleObjectMixin 和 SingleObjectTemplateResponseMixin。我正在对此进行试验,因为我有兴趣创建一个通用视图,该视图将使用 ModelForm 执行 object_detail 视图,以便可以自动生成我的模型行。

为了尝试复制 DetailView 我尝试创建一个类,如下所示:

from django.views.generic import list_detail, View
from django.views.generic.detail import (SingleObjectMixin,
    SingleObjectTemplateResponseMixin, BaseDetailView)

class formdisplay(View,SingleObjectMixin,SingleObjectTemplateResponseMixin): pass

当我使用 formdisplay 而不是 list_detail.object_detail 我得到错误

TypeError at /inpatient-detail/4/
__init__() takes exactly 1 non-keyword argument (2 given)

有关如何执行此操作的任何提示?

另外,关于如何编写导入语句的文档在哪里?我不得不谷歌找到要导入的内容,因为我在文档中找不到。

在此先感谢,史蒂夫

4

1 回答 1

2

由于 django 关于基于类的通用视图的文档仍然不是最先进的,因此获得更多信息的最佳方法是浏览源代码;对于创建/更新视图,这是一个好的开始。

从多个类/mixin 继承时,您还应该注意它们的顺序 - 如果您查看 django 的源代码,您会看到它们将 Mixin 放在其他类之前

我并不完全清楚您要实现的目标,但如果您的目标是显示包含现有对象数据的表单,那么django.views.generic.update.UpdateView您应该是朋友!

于 2011-06-30T09:36:24.810 回答