假设我有一个模型,其中有一个名为documentation
的类变量。我想访问给定模型更改表单模板中的documentation
类变量。我怎样才能做到这一点?保存实例后,我可以使用{{original.documentation}}
访问模板中的类变量。
示范模型
class Person(models.Model):
# How do I access this variable in my change form template
# before saving the new instace?
documentation = "The Person model will be used for all staff including researchers, professors, and authors."
first_name = models.CharField(max_length=255)
答案 0 :(得分:1)
这可以通过更新ModelAdmin类https://docs.djangoproject.com/en/dev/ref/contrib/admin/#other-methods中的Django视图方法来完成。
def add_extra_context(model, kwargs):
kwargs.setdefault("extra_context", {})
kwargs["extra_context"]["documentation"] = model.__dict__.get('documentation','')
class DocumentableAdmin(admin.ModelAdmin):
def add_view(self, *args, **kwargs):
add_extra_context(self.model, kwargs)
return super(DocumentableAdmin, self).add_view(*args, **kwargs)
def changelist_view(self, *args, **kwargs):
add_extra_context(self.model, kwargs)
return super(DocumentableAdmin, self).changelist_view(*args, **kwargs)
def change_view(self, *args, **kwargs):
add_extra_context(self.model, kwargs)
return super(DocumentableAdmin, self).change_view(*args, **kwargs)
admin.site.register(Person, DocumentableAdmin)
现在,模型中定义的文档类变量将在使用{{ documentation|safe }}
可访问的更改表单管理模板中提供
答案 1 :(得分:0)
您可以使用ModelForms。创建表单并在您的视图中引用该表单,如formname = forms.formname()
。他们可以使用{formname}
标记显示整个表单。
最好在forms.py中操作变量而不是模板。但是,如果您希望在视图类中定义get_context_data(self, **kwargs)
函数,则可以在模板中访问变量,如:
def get_context_data(self, **kwargs):
context = super(view_name, self).get_context_data(**kwargs)
context['model_field_list'] = Modelname.objects.get(pk=self.kwargs["modelname_pk"])
return context
现在,您可以使用模板中的{model_field_list.fieldname}
标记访问变量。在此处查看get_context_data函数的文档:documentation