from django.core.exceptions import ValidationError
from django import forms
from django.contrib import admin
class ArticleAdmin(admin.ModelAdmin):
form = MyArticleAdminForm
class MyArticleAdminForm(forms.ModelForm):
def clean_name(self):
if some_condition:
raise ValidationError("Message which you want to show to the user")
return self.cleaned_data["name"]
# "app1/admin.py"
from django.contrib import admin
from .models import Person
@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):
class Media: # Here
js = ("core/admin/app1/js/additional.js",)
3条答案
按热度按时间hpxqektj1#
如果你浏览了django admin,你可以看到django使用submit_line.html来呈现保存(保存和继续)按钮。
有很多方法可以做到这一点,
1)如果你想要应用程序明智的警报,然后在你的
admin.py
文件中包括自定义js文件与管理媒体选项,在您的
myscript.js
写入中,}); 2)如果你想在admin中的所有表单的警报,只需继承
templates/admin/submit_line.html
目录中的submit_line.html,并简单地写,fjaof16o2#
但是当用户在Django Admin中点击保存按钮时,我如何显示一个警报?有办法做到吗?
它被称为validation。Django的最佳实践是在服务器上进行验证,文档中描述了这种方式。
您需要执行以下步骤:
1.在管理模型中设置
form
。1.在新表单中定义
clean_name
方法,其中name
是要检查的字段的名称。您也可以覆盖整个干净。1.如果出现错误,则引发
ValidationError
以向用户发送消息。如果在clean_name
方法中引发异常,name
字段将在界面中突出显示。fkvaft9z3#
当Django Admin中出现错误时,你可以通过点击
SAVE(Save)
按钮来显示一条警告消息。例如,有
Person
模型,如下所示:<
Add
andChange
pages>首先,我解释了当Django Admin中出现错误时,如何通过点击
Add
和Change
页面上的SAVE
按钮来显示警报消息。Person
admin如下所示:然后,在
core/static/core/admin/app1/js/
中创建additional.js
,并将submit_line.html从django/contrib/admin/templates/admin/submit_line.html
复制到templates/admin/app1/person/
,如下所示。* 您可以看到原始的submit_line.html:然后在
additional.js
中,定义checkIfEmpty()
,如果first_name
或last_name
为空,则显示警报消息,如下所示:然后,将
onclick="return checkIfEmpty();"
添加到submit_line.html
中的<input ... name="_save">
,如下所示:然后,在Media类中将
"core/admin/app1/js/additional.js"
设置为js
,如下所示:然后,单击
SAVE
按钮显示警报消息,因为Add
页面上的First name:
为空,Change
页面上的Last name:
为空,如下所示。* 在本例中,仅在PersonAdd
和Change
页面上显示警报消息,而在其他adminAdd
和Change
页面上不显示警报消息:并且,如果您希望仅在
Add
页面中显示警报消息,请在submit_line.html
中添加{% if not change %}...{% endif %}
,如下所示:并且,如果您希望仅在
Change
页面中显示警报消息,请在submit_line.html
中添加{% if change %}...{% endif %}
,如下所示:并且,您可以直接在
submit_line.html
中定义checkIfEmpty()
,如下所示,而无需在additional.js
中定义checkIfEmpty()
并在Media类中将其设置为js
:<
Change List
page>接下来,我解释了如何在Django Admin中出现错误时,通过单击
Change List
页面上的Save
按钮来显示警报消息。因此,
Person
管理员如下所示:然后,在
core/static/core/admin/app1/js/
中创建additional.js
,并将pagination.html从django/contrib/admin/templates/admin/pagination.html
复制到templates/admin/app1/person/
,如下所示。* 您可以看到原始的pagination.html:然后在
additional.js
中定义checkIfEmpty()
,如果first_name
或last_name
为空,则显示警报消息,如下所示:然后,将
onclick="return checkIfEmpty();"
添加到pagination.html
中的<input ... value="{% translate 'Save' %}">
,如下所示:然后,在Media类中将
"core/admin/app1/js/additional.js"
设置为js
,如下所示:然后,通过单击
Save
按钮显示警报消息,因为FIRST NAME
字段为空,如下所示。* 本例仅在PersonChange List
页面显示提醒消息,其他adminChange List
页面不显示:并且,您可以直接在
pagination.html
中定义checkIfEmpty()
,如下所示,而无需在additional.js
中定义checkIfEmpty()
并在Media类中将其设置为js
: