首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django管理-在特定条件下防止保存并向用户显示消息

Django管理-在特定条件下防止保存并向用户显示消息
EN

Stack Overflow用户
提问于 2019-05-10 15:13:42
回答 2查看 2K关注 0票数 2

我正在组装一个Django应用程序-创建和注册的模型和模型形式。

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

我尝试过引发异常,以字符串的形式返回消息等,但似乎没有效果。虽然我可以阻止保存发生,但如果不返回模型,我将得到堆栈跟踪。

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

我需要发生的事情的顺序是:

  1. 验证正在输入的表单数据(自动发生)
  2. 对外部服务执行API调用以检索信息
  3. 将信息分配给模型支柱并保存模型
  4. 如果API调用失败,取消save()并向用户显示消息,告诉他们保存失败了,原因是。如果保存失败,那么页面应该重新加载,而不是重定向到列表页面。

我只是无法找到一个简单的解决方案,在那里-任何帮助感谢!

EN

回答 2

Stack Overflow用户

发布于 2020-05-14 09:40:49

代码语言:javascript
复制
from django.contrib import messages

class MyAdminView(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
        try:
            super(MyAdminView, self).save_model(request, obj, form, change)
        except Exception as e:
            messages.set_level(request, messages.ERROR)
            messages.error(request, e)
票数 2
EN

Stack Overflow用户

发布于 2019-05-10 15:34:43

ModelAdmin模型。

代码语言:javascript
复制
  class MyAdminView(admin.ModelAdmin):
       def save_model(self, request, obj, form, change):
           super(MyAdminView, self).save_model(request, obj, form, change)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56080420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档