gpt4 book ai didi

python - 具有 3 个多对多字段的 Django 模型

转载 作者:太空宇宙 更新时间:2023-11-04 08:20:12 25 4
gpt4 key购买 nike

我有这些模型

class User(models.Model):
user_name = models.CharField()
ph_number = models.CharField()

class ExamPaper(models.Model):
paper_name = models.CharField()
paper_subject = models.CharField()

class Questions(models.Model):
paper = models.ManyToManyField(ExamPaper, related_name='question_set')
question_num = models.IntegerField()
question_text = models.TextField()

现在我想存储每个用户对每篇论文的每个问题的结果。论文会有多个问题,一个问题也可能属于多篇论文。用户可以提供多篇论文和多个问题。

我希望 mysql 表有用户、论文和问题来定义主键,还有两个字段“标记”和“结果”。我无法理解如何在 Django 模型中执行此操作。这行得通吗:

class Result(models.Model):
user = models.ManyToManyField(User)
paper = models.ManyToManyField(ExamPaper)
question = models.ManyToManyField(Question)
marks = models.IntegerField()
result = models.CharField()

请问谁能解释一下?

最佳答案

您应该使用一对多 ( ForeignKey ) 关系而不是多对多:

class Result(models.Model):
user = models.ForeignKey(User)
paper = models.ForeignKey(ExamPaper)
question = models.ForeignKey(Question)
marks = models.IntegerField()
result = models.CharField()

class Meta:
unique_together = (("user", "paper", "question"), )

如果一个问题只能出现在一张试卷上,那么 Question.paper 也应该是一个 ForeignKey 并且您可以从 Result< 中删除 paper 字段.

关于python - 具有 3 个多对多字段的 Django 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6617333/

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