【发布时间】:2019-05-10 15:13:42
【问题描述】:
我正在整合一个 Django 应用程序 - 创建并注册模型和模型表单。
添加或编辑特定模型记录时,我需要调用外部服务以获取一些信息。如果成功检索信息,我想更新该模型上用户不知道的列并保存模型。如果调用失败,我需要阻止保存发生并将自定义消息返回给用户。
我尝试过引发异常,将消息作为字符串返回等,但似乎没有任何效果。虽然我可以阻止保存的发生,但如果我不返回模型,我最终会得到一个堆栈跟踪。
我见过各种使用 clean() 方法或信号的解决方案,但似乎没有一个适合需要。
我需要发生的事情的顺序:
验证正在输入的表单数据(自动发生)
对外部服务执行 API 调用以检索信息
将信息分配给模型道具并保存模型
如果 API 调用失败,取消 save() 并向用户显示消息,告诉他们保存失败并说明原因。如果保存失败,则页面应重新加载,而不是重定向到列表页面。
我似乎无法找到一个简单的解决方案 - 感谢任何帮助!
【问题讨论】:
标签: python django django-models django-admin