Python Django pre_保存信号和ModelAdmin自定义错误消息
我有一个模型,其pre_save()信号通过以下方式连接到删除服务(json、REST等):Python Django pre_保存信号和ModelAdmin自定义错误消息,python,django,django-admin,django-signals,django-1.11,Python,Django,Django Admin,Django Signals,Django 1.11,我有一个模型,其pre_save()信号通过以下方式连接到删除服务(json、REST等): 在本地保存之前,查询远程服务,请求远程插入 远程服务完成它的工作,主要是检查相关条目是否已经存在 成功(HTTP201)后,一切正常,本地模型使用远程服务响应填充数据库 失败时,服务返回一个HTTP 400(状态代码有争议,但这是关于SO:-)的另一个问题) 错误响应的形式如下所示: {'local\u model\u field':[u'此元素已存在]} 然后,本地模型预保存信号会引发一个验证错误:
{'local\u model\u field':[u'此元素已存在]}
验证错误
:
raisevalidationerror(json_响应['local_model_field'][0])
ModelAdmin
,并显示为标准错误消息,并填充相关内容
我尝试了以下方法,但没有效果:
def changeform_view(self, request, object_id=None, form_url='', extra_context=None):
"""
trying to display the right message when pre_save() fails on model save() method (after asking CC)
"""
try:
return super(ObjectAdmin, self).changeform_view(request, object_id, form_url, extra_context)
except IntegrityError as e:
self.message_user(request, e, level=messages.ERROR)
return HttpResponseRedirect(form_url)
验证错误是否正确?知道pre_save()
必须锁定以本地和远程副本结束的任何机会。主要原因是本地/远程对象创建可以从管理员处进行,也可以从其他网站实例/类型(例如前端、面向最终用户)进行
谢谢