Django:QuerySet过滤器无法按预期工作

时间:2019-11-09 17:34:43

标签: python django

我有以下QuerySet。

>>> from dulwich import porcelain
>>> hash = porcelain.ls_remote('.')[b'refs/remotes/origin/master']

现在我只希望有两个答案(9)。但是,我的过滤器请求完全被忽略了。看到我做错了吗?

from myapp.events.models import Event
from myapp.surveys import QuestionFocus
from django.conf import settings

event = Event.objects.get(pk=12)
survey = event.surveys.get(
    template=settings.SURVEY_POST_EVENT
).questions.filter(
    focus=QuestionFocus.RECOMMENDATION_TO_FRIENDS,
    answers__answer="9"
).prefetch_related("answers")

survey.first().answers.all()

答案模型:

>>> <QuerySet [Answer: 2, Answer: 9, Answer: 9, Answer: 10]>

1 个答案:

答案 0 :(得分:1)

根据您当前的设计,一个Question实例可以与许多Answer实例相关。因此,survey.first()返回第一个经过过滤的Question,而.answers.all()则返回所有相关的答案实例。

您的answers__answer="9"过滤器运行正常;如果您具有这种关系,它将仅显示包含Question且其answers字段值为answer的{​​{1}}个实例。


也许您想在9Question之间建立一对一的关系,或者如果许多问题可以有一个共同点,则可以从AnswerQuestion建立多对一的关系答案。