具有以下模型
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)
我想确保一个人在一个部门中是唯一的(意味着一个部门只能有一个职位)。我的方法是对位置使用约束,但我无法弄清楚
class Position(models.Model):
name = models.CharField(max_length=10)
person = models.ForeignKeyField(to=Position)
department = models.ForeignKeyField(to=Department)
class Meta:
constraints = UniqueConstraint(fields=['person'], condition=Q(???))
我希望会有某种Q(<all_departments>)
找不到的东西
编辑:如果有更复杂的关系怎么办:
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,其中列出了字段
UniqueConstraint(fields=['person', 'department'], name='unique_department_person')
这样可确保数据库中仅存在同一个人和部门的组合
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句