我有一个看起来像这样的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的内置约束异常,而不是创建自定义约束异常。
有人可以用我最好/最快的方式来实现这个目标吗?
感谢。
答案 0 :(得分:5)
在您的模型定义中you can tell Django that 'name' should be unique:
name = models.CharField(max_length=8, unique=True)
如果您尝试保存两个具有相同名称的记录,则会引发django.db.IntegrityError
。
答案 1 :(得分:0)
try:
Category.objects.get(name='name')
except Category.DoesNotExist:
# call the save method of model