我有以下QuerySet。
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()
现在我只希望有两个答案(9)。但是,我的过滤器请求完全被忽略了。看到我做错了吗?
>>> <QuerySet [Answer: 2, Answer: 9, Answer: 9, Answer: 10]>
答案模型:
class Answer(TimeStampedModel):
question = models.ForeignKey(
"surveys.Question", on_delete=models.CASCADE, related_name="answers"
)
response = models.ForeignKey(
"Response", on_delete=models.CASCADE, related_name="answers"
)
answer = models.TextField(verbose_name=_("Answer"))
choices = models.ManyToManyField(
"surveys.AnswerOption", related_name="answers", blank=True
)
answers__answer="9"
过滤器运行正常;如果您具有这种关系,它将仅显示包含Question
且具有answers
字段answer
的9
实例。