如何在 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,还有其他属性可以设置字段唯一吗?

原文由 user7693832 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 920
2 个回答

只需在字段中添加 unique=True ,所以:

 serial_number = models.CharField(max_length=64, unique=True)

有关更多信息,请参阅 文档

原文由 Mauricio Cortazar 发布,翻译遵循 CC BY-SA 4.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

原文由 Eyong Kevin Enowanyo 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题