我想在django管理界面的字段旁边添加文本。Django Admin:在运行时在字段旁边添加文本
警告需要在运行时在python方法内创建。我很了解python和django ORM,但我不知道如何在该字段旁边获取文本。
该文本应该是一个警告。在clean()中引发ValidationError不是解决方案,因为 用户不能再编辑页面。它应该只是一个警告信息。
我想在django管理界面的字段旁边添加文本。Django Admin:在运行时在字段旁边添加文本
警告需要在运行时在python方法内创建。我很了解python和django ORM,但我不知道如何在该字段旁边获取文本。
该文本应该是一个警告。在clean()中引发ValidationError不是解决方案,因为 用户不能再编辑页面。它应该只是一个警告信息。
您可以为管理员使用自定义ModelForm
子类,在其初始化时为该字段添加help_text
属性,并对其进行适当的设置。
# forms.py
class YourModelForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(YourModelForm, self).__init__(*args, **kwargs)
self.fields['field_in_question'].help_text = generate_warning()
# admin.py
class YourModelAdmin(admin.ModelAdmin):
form = forms.YourModelForm
# And here you can specify custom CSS/JS which would make
# `help_text` for that particular field look like a warning.
# Or you can make it generic--say, style (and maybe reposition w/js) all tags
# like <span class="warning"> that occur within the help text of any field.
class Media:
css = {"all": ("admin_warning.css",)}
js = ("admin_warning.js",)
我认为最简单的方法是覆盖该模型的特定管理页面。这在Django文档中描述为here。您需要覆盖的模板可能是change_form.html
。在这些模板中显示的对象可在模板变量original
中找到。
我会为您的模型添加一个方法或属性,该方法或属性会生成并返回错误消息,并从模板中调用此方法。
编辑:看看contrib/admin/templates/admin/change_form.html
有一个包含includes/fieldset.html
的显示管理网站的字段。如果模型具有一些特殊的命名属性,并且如果显示,则可以在其中放置一些代码。你可以简单地用你的自定义模型覆盖所有型号的change_form.html
。
如果您想在更改列表视图中执行此操作,您可以在模型方法中编写该方法,该方法返回所需格式的字符串,并将该方法的名称放入admin的list_display中。
class MyModel(models.Model):
myfield = models.CharField(max_length=100)
def myfield_with_warning(self):
return '%s - %s' % (self.myfield, '<span class="warn">My warning message</p>'
myfield_with_warning.short_description = 'My field verbose name'
myfield_with_warning.allow_tags = True
class MyModelAdmin(models.ModelAdmin):
list_display = ('myfield_with_warning',)
如果不是你所需要的,更准确地写,你想在哪里显示警告信息。
你想添加列表中显示的文本在Django管理?例如model.text的值和其他文字? – Efazati 2011-08-24 08:55:30
我想在change_form(在编辑模型实例)页面中发出警告。 – guettli 2012-01-25 14:36:24