在 Django Admin 中保存模型之前显示警报消息
Posted
技术标签:
【中文标题】在 Django Admin 中保存模型之前显示警报消息【英文标题】:Showing Alert Message Before Saving Model in Django Admin 【发布时间】:2018-01-17 23:15:21 【问题描述】:有一些方法可以在模型保存到数据库后显示消息,或者如果保存时出现任何错误。但是,当用户单击 Django Admin 中的 save 按钮时,如何显示警报?有没有办法做到这一点?
【问题讨论】:
唯一的方法是使用 javascript 甚至更好的 jQuery,Django Admin already provides 为您服务。 【参考方案1】:如果您浏览过 django 管理员,那么您会看到 django 使用 submit_line.html 来呈现保存(保存和继续)按钮。
有多种方法可以做到,
1) 如果您想要应用明智的警报,那么在您的 admin.py
文件中包含带有管理媒体选项的自定义 js 文件,
@admin.register(Model)
class ModelAdmin(admin.ModelAdmin):
class Media:
js = (
'js/myscript.js', # project's static folder ( /static/js/myscript.js )
)
在你的myscript.js
写下,
window.addEventListener("load", function ()
(function ($)
$('form').submit(function ()
var c = confirm("continue submitting ?");
return c;
);
)(django.jQuery);
);
2 ) 如果你想在 admin 中的所有表单的警报,只需继承 templates/admin/submit_line.html
目录中的 submit_line.html 并简单地编写,
<script>
$(document).ready(function()
$('form').submit(function()
var c = confirm("continue submitting ?");
return c;
);
)
</script>
【讨论】:
你能把你的答案与一些来源联系起来吗? 链接到媒体表单docs.djangoproject.com/en/3.1/topics/forms/media/… 有没有办法在confirm中添加css?【参考方案2】:但是当用户点击 Django 中的保存按钮时如何显示警报 行政?有没有办法做到这一点?
它叫做validation。 Django 最佳实践是在服务器上进行验证,这种方式描述为in the docs。
您需要执行以下步骤:
-
在你的管理模型中设置
form
。
在您的新表单中定义clean_name
方法,其中name
是您要检查的字段的名称。您还可以覆盖整个clean。
如果出现错误,则引发ValidationError
以向用户发送消息。如果您在clean_name
方法中引发异常name
字段将在界面中突出显示。
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"]
【讨论】:
以上是关于在 Django Admin 中保存模型之前显示警报消息的主要内容,如果未能解决你的问题,请参考以下文章
在 Django Admin 中使用 DateTimeField 保存模型实例会丢失微秒分辨率
在django admin中使用完整日历;将外部拖动的项目保存到模型