Django理解嵌套模型上的uniq约束
具有以下模型的Django理解嵌套模型上的uniq约束,django,django-models,Django,Django Models,具有以下模型的 class Department(models.Model): name = models.CharField(max_length=10) class Person(models.Model): name = models.CharField(max_length=10) class Position(models.Model): name = models.CharField(max_length=10) person
class Department(models.Model):
name = models.CharField(max_length=10)
class Person(models.Model):
name = models.CharField(max_length=10)
class Position(models.Model):
name = models.CharField(max_length=10)
person = models.ForeignKeyField(to=Position)
department = models.ForeignKeyField(to=Department)
我想保证一个人在一个部门是独一无二的(意味着在一个部门只能有一个职位)。我的建议是对位置进行限制,
但我不明白
Q()
这样的东西,但我找不到
编辑:如果存在更复杂的关系怎么办:
class Company(models.Model):
name = models.CharField(max_length=10)
class Department(models.Model):
name = models.CharField(max_length=10)
models.ForeignKey(to=Company)
class Person(models.Model):
name = models.CharField(max_length=10)
class Position(models.Model):
name = models.CharField(max_length=10)
person = models.ForeignKeyField(to=Position)
department = models.ForeignKeyField(to=Department)
一个人在一家公司应该只有一个职位吗?你需要的只是与列出的职位的唯一约束
这确保了数据库中只存在同一个人和部门的一个组合所以,如果我在部门和公司之间也有FK关系,我想确保一个人对公司来说是唯一的?(抱歉,尝试了一个最小的示例--不起作用…)
class Company(models.Model):
name = models.CharField(max_length=10)
class Department(models.Model):
name = models.CharField(max_length=10)
models.ForeignKey(to=Company)
class Person(models.Model):
name = models.CharField(max_length=10)
class Position(models.Model):
name = models.CharField(max_length=10)
person = models.ForeignKeyField(to=Position)
department = models.ForeignKeyField(to=Department)
UniqueConstraint(fields=['person', 'department'], name='unique_department_person')