基于代码的唯一约束Django Mod

2024-04-19 23:29:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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的一个内置约束异常,而不是创建自定义异常。

有人能告诉我最好/最快的方法吗?

谢谢。


Tags: thedjangoname模型selffalsemodelmodels
2条回答

在视野中

try:
    Category.objects.get(name='name')
except Category.DoesNotExist:
    # call the save method of model

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

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

如果试图用相同的名称保存两条记录,将引发django.db.IntegrityError

相关问题 更多 >