Предположим, у меня есть две модели, что между ними существует отношение один ко многим. Это мои модели:
- Экзамен
- Вопрос
Я хочу получить QuerySet
связанных вопросов экзамена объекты, содержащие текст, содержащий q1_text
. А также я хочу отфильтровать question_set
этих экзаменационных объектов, которые содержат только q1_text
.
Это мои Exam
и Question
модели:
models.py
class Exam(models.Model):
name = models.CharField(max_length=50)
level = models.CharField(max_length=10)
type = models.CharField(max_length=20)
city = models.ForeignKey(City, on_delete=models.CASCADE)
class Question(models.Model):
text = models.CharField(max_length=400, default='how are you?')
exam = models.ForeignKey(Exam, on_delete=models.CASCADE)
Предположим, что в возвращаемых QuerySet
существуют объекты вопросов, некоторые из которых иметь текстовое поле со значением q1_text
и другие со значением q2_text
. Для этой цели я использовал этот фильтр:
Exam.objects.filter(question__text__icontains='q1_text')
Если я использую этот код, я получаю QuerySet
объектов экзамена, но есть некоторые вопросы с текстом q2_text
в question_set
из этих объектов. Однако мне нужны только вопросы, содержащие q1_text
, поэтому для меня это неверный результат.
Мне нужно отфильтровать question_set
из exam objects
. поэтому я использовал этот код:
второй фильтр
Exam.objects.filter(question__text__icontains='q1_text')[i].question_set.all().filter(text__icontains='q1_text')
Но проблема в том, что вывод этого кода QuerySet
из Question model
, но я хочу QuerySet
из Exam model
с отредактированным question_set
, содержащим только те вопросы, которые содержатся в их text
q1_text
Мои предложения:
Возможно один из возможных способов - использовать второй фильтр , а затем установить атрибут question_set
из exam objects
для его вывода, но я не знаю, как это сделать в коде.
В общем, я думаю, что мы должны найти способ отредактировать или отфильтровать question_set
из exam objects
и получить QuerySet этих объектов исследования в выводе.