gpt4 book ai didi

python - 在多对多字段中使用 through 属性并遇到 "Non-Unique"字段要求

转载 作者:行者123 更新时间:2023-11-28 17:36:41 26 4
gpt4 key购买 nike

我正在做一个新项目,包括问题和一些学生作为参与者,我想在表格中有问题参与者,所以为了做到这一点,我创建了一个Questions 表,并通过添加“through”属性使 对应 QuestionsParticipant。但是当我为特定问题记录特定参与者时,我不能再使用该参与者来回答新问题了!为什么?

class Questions(models.Model):
course = models.ForeignKey(Course, blank=False)
question_author = models.ForeignKey(Author, blank=False)
question_details = models.CharField(max_length=100, blank=False, default='')
members = models.ManyToManyField(CourseParticipant, through='QuestionsParticipant')
question_type = models.CharField(choices=question_types, max_length=1, default='1')
timestamp = models.DateTimeField(auto_now_add=True)

class QuestionsParticipant(models.Model):
question = models.ForeignKey(Questions)
participant = models.ForeignKey(CourseParticipant, primary_key=True)
tries = models.PositiveIntegerField(blank=False, default=0)
flag = models.BooleanField(default=False)
flag_reason = models.CharField(max_length=50, blank=True, default='')
success = models.BooleanField(default=False)
timestamp = models.DateTimeField(auto_now_add=True)

A screen depicts the error

最佳答案

我认为您在设计问题与其参与者之间的关系时存在逻辑问题。在您的上下文中,多对多关系是一个问题可以由多个参与者回答,一个参与者可以回答多个问题。

这意味着;您永远不应该将 primary_key=True 放入 QuestionsParticipant 表中的任何 FK,否则您会破坏 M2M 关系本身。

如果您希望参与者只回答一个问题,您可以将 question = models.ForeignKey(Questions) 放入 CourseParticipant 表。

此外,请注意模型名称应始终为单数。 (问题问题参与者等)

关于python - 在多对多字段中使用 through 属性并遇到 "Non-Unique"字段要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29788312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com