我正在开发一个项目,允许用户根据一些随机问题进行测试。 我的models.py有这两个类:
class Question(models.Model):
content = models.CharField()
...
class Answer(models.Model):
content = models.CharField()
isCorrect = models.BooleanField()
question = models.ForeignKey(Question)
在我的views.py中,我使用此查询得到20个随机问题:
questions = Question.objects.order_by('?')[:20]
通过这种方法我只有问题,但我也想要与每个问题相关的答案,我找到了一些解决方案,但我想知道什么是获得问题和相关答案的最佳做法?我可以将它们添加到问题构造函数吗?
谢谢!
答案 0 :(得分:2)
你可以像@karthikr那样说,但它会为每个问题进行额外的数据库调用。
我会这样做:
questions = Question.objects.order_by('?')[:20]
answers = Answer.objects.filter(question__in=questions)
#some databases will not suppoert this, so use:
#answers = Answer.objects.filter(question_id__in=[q.id for q in questions])
for question in question:
answers_for_question = filter(lambda answer:answer.question_id = question_id, answers)
只有2个db调用,而不是21个
(对于一大堆问题,请使用itertools来获得答案。以获得更好的效果)