Любой способ обработать IntegrityError в Django? - PullRequest
0 голосов
/ 19 июня 2019

В django исключение IntegrityError может быть вызвано множеством причин.

Иногда эта ошибка означает уникальный конфликт.Иногда это может быть вызвано проверкой внешнего ключа.

В настоящее время мы можем узнать основную причину только путем преобразования исключения в текст:

(1062, "Duplicate entry '79d3dd88917a11e98d42f000ac192cee-not_created' for key 'fs_cluster_id_dir_e8164dce_uniq'")

Но это очень недружелюбно для идентификации программы.Есть ли какой-нибудь способ для кода определить основную причину исключения?

Например, если я знаю, что это вызвано уникальным конфликтом, я могу сказать клиенту, что это вызвано, потому что некоторые ресурсы уже существуют.Если я знаю, что это вызвано тем, что внешний ключ не существует, я могу сказать клиенту, что это вызвано тем, что родительский ресурс не создан.

Так может ли какой-нибудь хороший способ определить причину по коду?

1 Ответ

0 голосов
/ 19 июня 2019

Не знаю о хорошем.

Вам нужно определить точную причину в вашем коде?Если у вас есть альтернативный способ продолжения, который вы хотите избегать каждый раз из соображений эффективности, вы можете просто написать:

try:
   # the simple way
except IntegrityError as simplefail:
   try:
      # the complicated way
   except IntegrityError as complexfail:
      # log this utter failure and re-raise one or other of the caught errors
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...