在Django中滚动自己的通用视图

时间:2011-06-30 04:27:21

标签: django django-generic-views

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)

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

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

提前致谢, 史蒂夫

1 个答案:

答案 0 :(得分:2)

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

当从多个类/ mixin继承时,你也应该关注他们的顺序 - 如果你看看django的源代码,你会看到他们在其他类之前放置了Mixins

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