如果它确实一直到数据库,那显然是一个 IntegrityError。但是,如果这是在它进入数据库之前发生的——比如说,在 Manager 类的保存方法中——应该引发什么异常?
例子:
class MyManager(models.Manager):
def create_from_user(self, user):
try:
existing = self.get(user=user)
raise Exception("There is already an object for this user.") # more specific exception needed
except self.DoesNotExist:
# begin creating the record
由于记录的性质,我不希望出现 get_or_create 类型的情况(我希望在记录已经存在时使用此方法是抛出异常的硬错误)。
假设我在我的表上设置了唯一约束,显然最终会抛出一个 IntegrityError ,但我宁愿不依赖它,而是在代码中明确说明。但我不确定哪个例外是最准确的(或者我是否必须自己动手)。