我有这个代码:
try:
principal = cls.objects.create(
user_id=user.id,
email=user.email,
path='something'
)
except IntegrityError:
principal = cls.objects.get(
user_id=user.id,
email=user.email
)
它尝试使用给定的 id 和电子邮件创建用户,如果已经存在,则尝试获取现有记录。
我知道这是一个糟糕的结构,无论如何它都会被重构。但我的问题是这样的:
我如何确定发生了哪种IntegrityError
情况:与unique
约束违规相关的事件((user_id,电子邮件)上有唯一键)或与not null
约束相关的事件(path
不能为空)?