如何解决Django我可以在模型中放入多少个唯一字段?
我可以将两个字段都设置为True吗?
class Student(models.Model):
name = models.CharField(max_length=25,unique=True)
last_name = models.CharField(max_length=25,unique=True)
age = models.BigIntegerField()
解决方法
是的,您可以根据需要拥有任意多个。但是,如果您不希望两个学生有相同的名字,则可以使用unique_together
:
class Student(models.Model):
Meta:
unique_together = (('name','last_name'),)
name = models.CharField(max_length=25)
last_name = models.CharField(max_length=25)
age = models.BigIntegerField()
这将允许两个人具有相同的名字或相同的姓氏。可能仍然不是一个好主意,因为有时人们的姓名确实相同。.但是如果您想要这种行为,这就是您的做法。
,是的,但是如果您拥有与另一个模型对象不同的name
和相同的last_name
的人,反之亦然。不过要取决于您的用例。
您可以放入两个或多个唯一性约束,但在您的情况下它们将分别起作用。在您的示例中,每个姓名或姓氏只有一个学生的约束限制,换句话说,系统不允许有两个具有相同姓名或姓氏的学生。
我认为您正在尝试使两个学生的名字和姓氏不完全相同,重要的键是和。
实现这一目标的两种选择:
class Student(models.Model):
class Meta:
unique_together = (('name',)
name = models.CharField(max_length=25)
last_name = models.CharField(max_length=25)
age = models.BigIntegerField()
或
class Student(models.Model):
class Meta:
constraints = (
models.UniqueConstraint(fields=('name',name='unique_student_constraint'),)
name = models.CharField(max_length=25)
last_name = models.CharField(max_length=25)
age = models.BigIntegerField()
第二种方法添加了一些额外的参数,这些参数可能在其他情况下很有用。 More information
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。