首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当只允许一个记录时,尝试创建Django记录时,正确的异常是什么?

当只允许一个记录时,尝试创建Django记录时,正确的异常是什么?
EN

Stack Overflow用户
提问于 2012-06-29 13:08:48
回答 2查看 4.4K关注 0票数 4

如果它一直到数据库,那么它显然是一个IntegrityError。但是,如果在到达数据库之前发生了这种情况--例如,在Manager类中的保存方法中--那么应该引发什么异常呢?

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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,但是我不想依赖它,而是在代码中将其显式化。但我不知道什么例外是最准确的(或我是否必须自己滚)。

EN

回答 2

Stack Overflow用户

发布于 2012-06-29 13:31:05

我会说这是一个ValidationError。这就是Django在唯一字段上遇到重复条目时抛出的表单和模型干净方法的内容。

票数 8
EN

Stack Overflow用户

发布于 2012-06-29 13:23:02

为什么不自己扔一个IntegrityError呢?从某种意义上说,您的数据库相关代码检测到了即将发生的完整性问题。没有必要用不同的错误/异常来描述已经有名称的东西。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11268986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文