【发布时间】:2014-08-18 16:36:09
【问题描述】:
使用 Django 1.6,当有重复键时出现异常
IntegrityError: duplicate key value violates unique constraint "..."
Django 也使用IntegrityError 异常处理其他类型的数据库违规。我想将duplicate key 作为特例处理,即
try:
model = MyModel(name='xyz')
model.save()
except MyModal.IntegrityError:
if exception_due_to_duplicate_key:
do_something()
except:
do_something_else()
是否有唯一的错误代码或者我必须解析错误消息。我试图避免 get 调用数据库以确定违规是由于重复键造成的。
更新:我应该提一下 psycopg2 抛出的异常,因为我使用 Django 和 PostgreSQL。
【问题讨论】:
-
也许
get_or_create也能满足您的要求。 -
Django >= 1.6 现在为
IntegrityError提供__cause__:docs.djangoproject.com/en/1.6/ref/exceptions/… -
@danihp :这不会破坏试图避免
get的目的吗?
标签: python django django-models psycopg2