如何在Django模型中将一个字段链接到多值字段

3

这个模型档案包含关于用户的不同信息,还有一个名为quiz的字段,它是一个ManytoMany字段。这个字段显示了用户注册的测验。我想让total_score字段存储用户参加每个测验获得的分数。我该怎么做?

class Profile(models.Model):
  user=models.OneToOneField(User,related_name='Profile', on_delete=models.CASCADE)
  college=models.CharField(max_length=200)
  phone=models.IntegerField(blank=True,default=0)
  quiz=models.ManyToManyField(Quiz)
  total_score=models.IntegerField(default=0)

  def __str__(self):
    return self.user.username

class Quiz(models.Model):
  name=models.CharField(max_length=100)
  description=models.CharField(max_length=800,blank=True)
  dept=models.CharField(max_length=40)
  date=models.DateTimeField(default=datetime.datetime.now())
  duration=models.DurationField(default=datetime.timedelta(minutes=30))
  no_of_question=models.IntegerField(blank=True,default=0)
  theme=models.ImageField(blank=True)
  active=models.BooleanField(default=False)

  def __str__(self):
    return self.name

发布包含“Quiz”模型的问题。 - Arpit Solanki
有没有可能不创建新的模型实现这个功能? - bakarin
似乎是一个更好的想法。请查看下面的答案。 - Arpit Solanki
1个回答

3
似乎您需要创建另一个模型,可能称为“result”。
class Result(models.Model):
    profile = models.Foreignkey(Profile, on_delete=models.CASCADE)
    quiz = models.Foregnkey(Quiz, on_delete=models.CASCADE)
    score = models.IntegerField()

这个关系应该能够满足您的需求。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接