我想在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