1

我正在开发一个项目,允许用户根据一些随机问题进行测试。我的 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]

使用这种方法,我只有问题,但我也想要与每个问题相关的答案,我找到了一些解决方案,但我想知道获得问题和相关答案的最佳做法是什么?我可以将它们添加到 Question 构造函数中吗?

谢谢!

4

1 回答 1

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来获得答案。以获得更好的性能)

于 2013-08-16T15:23:35.020 回答