Django - 通过处理 OperationalError 从 MySQL 触发器中获取错误消息

Django - grabbing error message from MySQL trigger via handling OperationalError

我在 MySQL 中有一个 table,带有一个触发器,用于验证数据,如果临界值会发出错误消息信号。

触发代码如下:

CREATE TRIGGER `supermarkets_schema`.`legal_entities_BEFORE_INSERT`
BEFORE INSERT ON `supermarkets_schema`.`legal_entities`
FOR EACH ROW
BEGIN
    DECLARE parent_inn, parent_ogrn, parent_temp_leg_address VARCHAR(300);

    IF some_condition THEN
        SIGNAL sqlstate '45001' set message_text = 'My error msg' 
END

现在,我想在 Django 中获取此错误消息并将其显示在 Django 模板页面上。

这是我尝试做的事情:

import django.db

try:
   legal_entities_details_instance.legal_entities = legal_entities_form.save()
except OperationalError as e:
   return render_to_response("error_handling/main.html", {"message": e.message})

但不幸的是,我无法让 Django 正确处理它。会不会因为我为 OperationalError 导入了不正确的包而发生?请帮助我!!!

在您的代码中使用之前,您尚未导入 OperationalError

from django.db import OperationalError

您可能实际上想要捕获 DatabaseError 而不是 OperationalError(它是 DatabaseError 的子类)。