python - 基于代码的唯一约束 Django 模型

标签 python django django-models

我有一个看起来像这样的 Django 模型:

class Categories(models.Model):
    """
    Model for storing the categories
    """
    name = models.CharField(max_length=8)
    keywords = models.TextField()
    spamwords = models.TextField()
    translations = models.TextField()

def save(self, force_insert=False, force_update=False):
    """
    Custom save method that converts the name to uppercase
    """
    self.name = self.name.upper()
    super(Categories, self).save(force_insert, force_update)

每当插入或更新数据时。我想检查是否不存在同名记录。这是一个独特的约束,我想通过代码而不是数据库来实现。此表中的数据量很小,因此性能影响不是问题。如果存在违反约束的情况,我想引发 Django 的内置约束异常之一,而不是创建自定义异常。

谁能教我最好/最快的方法来完成这个?

谢谢。

最佳答案

在您的模型定义中 you can tell Django that 'name' should be unique :

name = models.CharField(max_length=8, unique=True)

如果您尝试保存两个具有相同名称的记录,将引发 django.db.IntegrityError

关于python - 基于代码的唯一约束 Django 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3194650/

相关文章:

python - 向 JSON 对象 Hook 添加类型提示的正确方法

python - 使用 INTERSECT 和 UNNEST 的 sqlalchemy

Django-管理员 : list_display TextField

python - 使用 Django ORM 添加列

python - django 'QuerySet' 对象中的反向关系没有属性 'name'

python - Django 更改 Photologue 的应用程序名称

python - assertNumQueries 问题

python - 如果值有两个以上空格,Pandas 会替换 df 中的行值

python - 能够检查数据库连接主机或名称(不是数据库名称而是设置)? Django

python - django-simple-history 中 ManyToManyField 的历史