Use of an attribute in a set to many, given and encountered with the "Non-unique" field
I'm working on a new project with questions and some of the students are contributors . I want to have questions in the table, so for this I created Questions and match the Member's Questions by adding an attribute via ". But when I record a specific participant for a specific question, I can no longer use that participant for a new question! Why?
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)
source to share
I think you have a logical problem in designing your relationship between the question and its participants. A many-to-many relationship in your context is that more than one participant can answer a question and a participant can answer multiple questions.
It means; you should never put
in any of your FKs in the table
, otherwise you will break the M2M communication.
If you want the participant to answer only one question, you can place the table
question = models.ForeignKey(Questions)
Also, note that model names must always be unique. (
source to share