Django:对多个模型字段的约束

时间:2011-05-13 15:05:23

标签: python django

示例:

class Author(models.Model):
    first_name = models.CharField()
    last_name = models.CharField()

    def _get_full_name(self):
       return '{0} {1}'.format(self.first_name, self.last_name)

   full_name = property(_get_full_name)

对全名设置唯一约束的推荐方法是什么?考虑覆盖保存,但也许有更好的解决方案?

2 个答案:

答案 0 :(得分:4)

查看Meta类选项unique_together

你可以这样做:

class Author(models.Model):
    first_name = models.CharField()
    last_name = models.CharField()

    def _get_full_name(self):
       return '{0} {1}'.format(self.first_name, self.last_name)

    full_name = property(_get_full_name)

    class Meta: 
       unique_together = ("first_name", "last_name")

优点是在数据库级别使用适当的UNIQUE SQL语句强制执行此操作。

答案 1 :(得分:2)

unique_together

unique_together =(“first_name”,“last_name”)