Jas*_*ins 45 python django django-models django-admin
在我的django应用程序中,我希望能够为我的一些模型添加自定义帮助文本到管理员更改表单.注意我不是在谈论help_text我可以在各个字段上设置的字段特定属性.例如,在变化形式的顶部,My_Model在My_App我想能够添加一些HTML,说:"有关我的模型的更多信息,请参阅http://example.com为了提供一个链接到一个"内部文档维基.
有没有简单的方法来实现这一点,还是我需要为模型创建自定义管理表单?如果是这样,你能举个例子说明我会怎么做吗?
Mik*_*one 65
使用admin的fieldsets:
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...
Run Code Online (Sandbox Code Playgroud)
您可以在管理员中拥有多个字段集.每个都可以有自己的标题(用标题替换None上面的标题).您还可以添加'classes': ('collapse',),到wide字段集以使其开始折叠(该类使数据字段更宽,其他类名称表示他们所做的任何CSS).
注意:description字符串被认为是安全的,所以不要在其中放置任何未清理的数据.这样做是为了你可以根据需要将标记放在那里(比如你的链接),但是,块格式化(如<ul>列表)可能看起来不对.
And*_*rra 28
有一种相当简单但未充分记录的方法来实现这一目标.
首先,您需要将额外的上下文传递给您的管理员.为此,您可以在管理类中定义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)
Run Code Online (Sandbox Code Playgroud)
接下来,您需要创建该自定义模板(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 %}
Run Code Online (Sandbox Code Playgroud)
我已选择将此模板放在templates/admin/myapp /中,但这也很灵活.
更多信息,请访问:
http://davidmburke.com/2010/05/24/django-hack-adding-extra-data-to-admin-interface/
| 归档时间: |
|
| 查看次数: |
16802 次 |
| 最近记录: |