Django管理员操作中的自定义错误消息

zba*_*bar 31 django django-models django-admin

我编写了自定义管理操作,基本上QuerySet.update()对模型中的某些字段执行操作.有些时候不应该允许这些操作完成 - 相反,它们应该显示错误而不做任何事情.我试过了message_user,但是它显示了一个绿色的复选标记,而我希望它显示Django管理员错误信息.

我在网上找到的解决方案是使用a ModelForm,但我不认为这适用于这种情况,因为这里的一切都发生在管理员更改列表页面上.

Bar*_*tek 37

message_user管理中使用的功能只需使用contrib.messages包.你可以尝试这样的事情:

from django.contrib import messages

# Then, when you need to error the user:
messages.error(request, "The message")
Run Code Online (Sandbox Code Playgroud)

你也可以使用warning,debug,infosuccess到位error

希望有所帮助!

  • 这并没有解决“并且不做任何事情”的部分。例如,如果模型的保存引发异常,则应显示错误并且不应保存模型。使用这个答案,错误确实显示正确,但是绿色的成功信息仍然跟在红色的错误信息之后。如何防止显示成功消息? (2认同)

Olg*_*lga 32

from django.contrib import messages
...
self.message_user(request, "The message", level=messages.ERROR)
Run Code Online (Sandbox Code Playgroud)

Сan也可以使用(messages.ERROR,messages.WARNING,messages.DEBUG,messages.INFO,messages.SUCCESS)


max*_*mus 5

您可以使用 django.contrib.messages 后端

from django.contrib import messages

def my_action(self, request, queryset):
  #do something
  messages.error(request,'Error message')
Run Code Online (Sandbox Code Playgroud)

这将显示错误消息和红色错误标志。