如果它一直到数据库,那么它显然是一个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,但是我不想依赖它,而是在代码中将其显式化。但我不知道什么例外是最准确的(或我是否必须自己滚)。
发布于 2012-06-29 13:31:05
我会说这是一个ValidationError
。这就是Django在唯一字段上遇到重复条目时抛出的表单和模型干净方法的内容。
发布于 2012-06-29 13:23:02
为什么不自己扔一个IntegrityError
呢?从某种意义上说,您的数据库相关代码检测到了即将发生的完整性问题。没有必要用不同的错误/异常来描述已经有名称的东西。
https://stackoverflow.com/questions/11268986
复制相似问题