从temp访问Django CreateView中的模型名

2024-10-03 06:18:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用django1.6中的通用CRUD视图,例如:

class KanriCreateView(CreateView):
    template_name = 'generic_form.html'

class KanriUpdateView(UpdateView):
    template_name = 'generic_form.html'

等等

注意:这些是作为基类使用的类,我在里面子类化了视图.py整个项目中的文件。在

为了保持干燥,我正在为所有创建/更新视图编写一个通用表单模板。在

对于更新视图,我可以访问模板中的object,这是我正在更新的实例。然后我使用object.__class__.__name__(通过一个自定义过滤器)来获取类的名称(这样我就可以自动生成诸如“adduser”、“addrole”等自定义按钮,这样表单看起来就不那么……通用了。在

当然,当我在CreateView中使用我的模板时,object不存在(因为它还没有创建),所以我的自定义按钮等不工作,我得到一个VariableDoesNotExist异常。在

Django是否提供了以便我可以在模板中使用它?在


Tags: nameform视图模板表单objecthtmltemplate
2条回答

如果您正在为CreateView使用一个ModelForm,那么这不太管用。这是因为您没有指定

model = MyModel

但你却指定

^{pr2}$

所以你能做的是

from django.contrib.admin.utils import model_ngettext

model_ngettext(self.form_class._meta.model, 1)
  1. 第一个视图的名称应该不同,例如KanriCreateView
  2. 它可能会帮助您获得视图类的名称:{{view.名称}}
  3. 如果您有权访问视图类(默认情况下由ContextDataMixin提供),那么您可以访问视图类的model属性并获得模型的名称:{{ view.model.__name__ }}

干杯

相关问题 更多 >