确保两个属性始终不同的 Django 模型 - unique_together 是答案吗?
Posted
技术标签:
【中文标题】确保两个属性始终不同的 Django 模型 - unique_together 是答案吗?【英文标题】:Django model ensuring two properties should always be different - Is unique_together the answer? 【发布时间】:2017-08-08 12:04:34 【问题描述】:如何确保两个属性的唯一组合不重复
例如在下面的模型中
class modelBodyPart(models.Model):
area = models.CharField(max_length=128)
crush_name = models.CharField(max_length=128)
在modelBodyPart的每个实例中area
和crush_name
应该总是不同的
例如,一些允许和不允许的结果是:
area = Area_A crush_name=Jenny //OK
area = Area_A crush_name=Jordan //OK
area = Area_B crush_name=Jenny //OK
area = Area_A crush_name=Jenny //Not allowed
我将如何在模型中实现这一点?我会使用unique_together 我无法完全理解上述链接中的案例要求,这就是我在这里询问的原因。
【问题讨论】:
【参考方案1】:是的,你是对的,你的代码应该是这样的 -
models.py
class modelBodyPart(models.Model):
area = models.CharField(max_length=128)
crush_name = models.CharField(max_length=128)
class Meta:
unique_together = ['area','crush_name']
【讨论】:
以上是关于确保两个属性始终不同的 Django 模型 - unique_together 是答案吗?的主要内容,如果未能解决你的问题,请参考以下文章