如何在django中设置唯一的字段?

时间:2017-10-18 02:55:18

标签: python django

我有一个模型类:

class PysicalServer(models.Model):

    serial_number = models.CharField(max_length=64)  # I want to add the unique
    name = models.CharField(max_length=16)

我知道使用primary_key可以设置唯一,但是serial_number不是我的id字段,我不能使用primary_key,还有其他属性我可以设置字段唯一吗?

3 个答案:

答案 0 :(得分:3)

只需添加unique=True serial_number = models.CharField(max_length=64, unique=True),请在此处查看更多信息https://docs.djangoproject.com/en/1.11/ref/models/fields/#unique

答案 1 :(得分:1)

关键字 unique=True 使 title CharField 独一无二。


class Book(models.Model):
    title= models.CharField(max_length=300, unique=True)

    def __str__(self):
        return self.title

http://www.learningaboutelectronics.com/Articles/How-to-make-a-database-table-field-unique-in-Django.php

答案 2 :(得分:0)

正如上面其他 stackoverflowers 所提到的,您可以使用 unique=True。但请注意,如果您想设置连接的唯一约束,这将不起作用。例如,如果您希望字段组合具有唯一性,则应使用 models.UniqueConstraint,如下所示

class Book(models.Model):
    title = models.CharField(max_length=300)
    sub_title = models.CharField(max_length=300)

    class Meta:
        constraints = [
            models.UniqueConstraint(fields=['title', 'sub_title'], name="%(app_label)s_%(class)s_unique")
        ]

    def __str__(self):
        return self.title