小编典典

将模型范围内的帮助文本添加到Django模型的管理表单中

python

在我的django应用程序中,我希望能够为某些模型的管理更改表单添加自定义的帮助文本。注意我不是在谈论help_text我可以在各个字段上设置的特定于字段的属性。例如,在变化形式的顶部,My_ModelMy_App我想能够添加一些HTML,说:“有关我的模型的更多信息,请参阅http://example.com为了提供一个链接到一个”内部文档Wiki。

有没有简单的方法可以做到这一点,还是我需要为模型创建一个自定义管理表单?如果是这样,您能举一个例子说明我该怎么做吗?


阅读 217

收藏
2021-01-20

共1个答案

小编典典

有一个相当简单的方法,但是文档不足,无法完成此任务。

在Admin类中定义render_change_form

首先,您需要将额外的上下文传递给管理员。为此,您可以在admin类中定义render_change_form函数,例如:

# admin.py
class CustomAdmin(admin.ModelAdmin):
    def render_change_form(self, request, context, *args, **kwargs):
        # here we define a custom template
        self.change_form_template = 'admin/myapp/change_form_help_text.html'
        extra = {
            'help_text': "This is a help message. Good luck filling out the form."
        }

        context.update(extra)
        return super(CustomAdmin, self).render_change_form(request,
            context, *args, **kwargs)

创建自定义模板

接下来,您需要创建该自定义模板(change_form_help_text.html)并扩展默认的’admin / change_form.html’。

# change_form_help_text.html
{% extends 'admin/change_form.html' %}
{% block form_top %} 
{% if help_text %}<p>{{ help_text }}</p>{% endif %}
{% endblock %}

我选择将此模板放置在templates / admin / myapp /中,但这也很灵活。


有关更多信息,请访问:

http://davidmburke.com/2010/05/24/django-hack-adding-extra-data-to-admin-
interface/

http://code.djangoproject.com/wiki/NewformsHOWTO#Q:HowcanIpassextracontextsablesintomyaddandchangeviews

2021-01-20