Django管理员在特定条件下阻止保存并向我们显示消息

2024-05-16 09:23:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在整理一个Django应用程序-创建并注册模型和模型表单。你知道吗

在添加或编辑特定模型记录时,我需要调用外部服务以获取一些信息。如果信息检索成功,我想更新该模型上用户不知道的列并保存该模型。如果调用失败,我需要防止保存发生,并返回一个自定义消息给用户。你知道吗

我尝试过引发异常,以字符串形式返回消息等,但似乎没有任何效果。虽然我可以阻止保存发生,但如果我不返回模型,我最终会得到一个堆栈跟踪。你知道吗

我见过使用clean()方法或信号的各种解决方案,但似乎没有一种适合需要。你知道吗

我需要做的事情的顺序是:

  1. 验证正在输入的表单数据(自动发生)

  2. 对外部服务执行API调用以检索信息

  3. 将信息分配给模型属性并保存模型

  4. 如果API调用失败,请取消save(),并向用户显示消息,告诉他们保存失败并给出原因。如果保存失败,那么页面应该重新加载,而不是重定向到列表页面。

我似乎找不到一个简单的解决办法-感谢任何帮助!你知道吗


Tags: django字符串用户模型api信息应用程序消息
1条回答
网友
1楼 · 发布于 2024-05-16 09:23:30

You can overwrite save_model of ModelAdmin.

  class MyAdminView(admin.ModelAdmin):
       def save_model(self, request, obj, form, change):
           super(MyAdminView, self).save_model(request, obj, form, change)

相关问题 更多 >