将模型范围的帮助文本添加到django模型的pipe理员表单中
在我的Django应用程序中,我希望能够为我的一些模型的pipe理员更改表单添加自定义的帮助文本。 注意我没有谈论可以在单个字段上设置的特定于字段的help_text
属性。 例如,在My_Model
的My_App
的变更表单的顶部,我希望能够添加一些说“有关我的模型的更多信息,请参阅http://example.com ”的HTML以提供一个链接到一个内部文档维基。
有没有简单的方法来完成这个,或者我需要为模型创build一个自定义的pipe理窗体? 如果是这样,你能给我一个我将如何做的例子吗?
有一个相当简单的,但尚未完成这一点的文件。
在Admin类中定义render_change_form
首先,你需要传递额外的上下文给你的pipe理员。 要做到这一点,你可以在你的pipe理类中定义一个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)
创build一个自定义模板
接下来,您需要创build自定义模板(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 %}
我已经select将这个模板放在templates / admin / myapp /中,但是这也是灵活的。
更多信息可在:
http://davidmburke.com/2010/05/24/django-hack-adding-extra-data-to-admin-interface/
使用pipe理员的字段集 :
class MyAdmin(admin.ModelAdmin): fieldsets = ( (None, { 'fields': ('first', 'second', 'etc'), 'description': "This is a set of fields group into a fieldset." }), ) # Other admin settings go here...
您可以在pipe理员中拥有多个字段集。 每个都可以有自己的标题(用标题replace上面的None
)。 你也可以添加'classes': ('collapse',),
到一个字段集合,让它开始崩溃( wide
类使得数据字段变宽,而其他的类名称则意味着你的CSS说他们做的任何事情)。
小心: description
string被认为是安全的 ,所以不要把任何不清楚的数据放在那里。 这样做是为了让标记可以根据需要放在那里(比如你的链接),但是块格式(比如<ul>
列表)可能看起来是错误的。
如果我明白你想要什么,下面的代码应该做你想要的。
def __init__(self, *args, **kwargs): super(ClassName, self).__init__(*args, **kwargs) if siteA: help_text = "foo" else: help_text = "bar" self.form.fields["field_name"].help_text = help_text
这是使用一些逻辑来修改重写表单的一个例子。 所以你只要把它放在你的ModelAdmin构造函数中就可以了。
除了使用描述创build字段集的可能性之外,您还可以覆盖更改表单的pipe理员模板 。
就像这个问题的更新一样。 您可以使用help_text
在模型中执行此help_text
https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.Field.help_text