[英]Modify unique_together contraint on through model
我的速率 model 定义如下:
class Rate(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, limit_choices_to={'reviewer': True})
project = models.ForeignKey(Project, on_delete=models.CASCADE)
rate = models.IntegerField(
default=100,
validators=[
MinValueValidator(0),
MaxValueValidator(100)
]
)
level = models.IntegerField(default=1)
objects = RateManager()
class Meta:
db_table = 'api_project_reviewers'
unique_together = ('user', 'project', 'level')
它是我的用户和我的项目 model 之间的中间 model。
它是在我的项目 model 上这样创建的:
reviewers = models.ManyToManyField(User, related_name="review_project", through='Rate')
我在 model 上添加了 unique_together 约束,因为我希望能够有 2 个条目:
基本上我希望能够将一个用户多次关联到同一个项目,从而改变级别。
但是当我这样做时,我会收到:
/admin/api/user/6/change/ 的 IntegrityError 重复键值违反了唯一约束“api_project_reviewers_project_id_user_id_cd9f7f42_uniq” 详细信息:键 (project_id, user_id)=(1, 6) 已存在。
这是完全正确的,不应该引发错误。
如何删除用户和项目的 unique_together 约束?
正如 burst_appearance 所建议的,我尝试这样做:
reviewers = models.ManyToManyField(User, related_name="review_project", through='Rate')
但我仍然遇到同样的问题谢谢
我认为您想要的是在 m2m model 上symmetrical=False
尝试改变
reviewers = models.ManyToManyField(User, related_name="review_project", through='Rate')
至
reviewers = models.ManyToManyField(User, related_name="review_project", through='Rate', symmetrical=False)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.