我想在涉及对另一个模型对象的引用的模型上添加约束。 在下面的代码中,我希望在 ProjectMember 模型上将 project_member 字段限制为不同于项目模型中的 project_creator。
class User(models.Model):
fullname = models.CharField(max_length=200)
email = models.EmailField(max_length=254)
password = models.CharField(max_length=254)
class Project(models.Model):
name = models.CharField(max_length=200)
timestamp = models.DateTimeField("date created", auto_now=True)
project_creator = models.ForeignKey(User, on_delete=models.CASCADE)
class ProjectMember(models.Model):
project = models.ForeignKey(Project, on_delete=models.CASCADE)
project_member = models.ForeignKey(
User,
on_delete=models.CASCADE,
verbose_name="member of the project"
)
class Meta:
order_with_respect_to = 'user_member'
constraints = [
models.CheckConstraint(check= ,
name='project creator not project member'),
]
最佳答案
您可以像这样将它添加到 Q 对象中,
class Meta:
order_with_respect_to = 'user_member'
constraints = [
models.CheckConstraint(check=~Q(project_member_id=project__project_creator_id) ,
name='project creator not project member'),
]
希望这对您有所帮助!
关于python - 定义 Django 模型约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58465619/