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

Mri*_*lla 2 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)
Run Code Online (Sandbox Code Playgroud)

每当插入或更新数据时。我想检查一下是否存在同名记录。这是我要通过代码而不是数据库来实现的唯一约束。该表中的数据量很小,因此性能命中率不是问题。如果存在约束违例,我想提出Django的内置约束例外之一,而不是创建自定义例外。

有人能以我最好/最快的方式做到这一点吗?

谢谢。

msa*_*ers 8

在模型定义中,您可以告诉Django'name'应该是唯一的

name = models.CharField(max_length=8, unique=True)
Run Code Online (Sandbox Code Playgroud)

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