在 Django Admin 中保存模型之前显示警报消息

Has*_*bal 3 python django django-templates django-models django-admin

有多种方法可以模型保存到数据库后或保存时出现任何错误时显示消息。但是,当用户单击Django Admin 中的保存按钮时,如何显示警报?有没有办法做到这一点?

Ani*_*war 5

If you explored the django admin then you can see that django uses submit_line.html for rendering the save ( save & continue ) buttons.

There are multiple ways to do it,

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 )
        )
Run Code Online (Sandbox Code Playgroud)

在你的myscript.js写作中,

window.addEventListener("load", function () {
(function ($) {
    $('form').submit(function () {
        var c = confirm("continue submitting ?");
        return c;
    });


})(django.jQuery);
Run Code Online (Sandbox Code Playgroud)

}); 2)如果您想对所有的管理员只是继承形式提醒submit_line.htmltemplates/admin/submit_line.html目录中,简单地写,

<script>
    $(document).ready(function(){
        $('form').submit(function() {
            var c = confirm("continue submitting ?");
            return c;
        });
    })
</script>
Run Code Online (Sandbox Code Playgroud)


Dan*_*kin 5

但是,当用户单击 Django Admin 中的“保存”按钮时,如何显示警报?有没有办法做到这一点?

这称为验证。Django 最佳实践是在服务器上进行验证,文档中描述了这种方式。

您需要执行以下步骤:

  1. 在您的管理模型中设置form
  2. clean_name在新表单中定义方法,其中name是要检查的字段的名称。您还可以覆盖整个clean
  3. 如果出现错误,则引发错误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"]
Run Code Online (Sandbox Code Playgroud)