Django:过滤和编辑对象的model_集,并以一对多关系返回该对象的查询集
假设我有两个模型,它们之间有一对多的关系。这些是我的模型:Django:过滤和编辑对象的model_集,并以一对多关系返回该对象的查询集,django,django-models,django-queryset,one-to-many,django-filter,Django,Django Models,Django Queryset,One To Many,Django Filter,假设我有两个模型,它们之间有一对多的关系。这些是我的模型: 考试 问题: 我想获得考试对象相关问题的QuerySet,这些考试对象的文本包含q1\u text。此外,我还想筛选这些只包含q1\u文本的考试对象的问题集 这些是我的考试和问题模型: models.py 假设在返回的QuerySet中存在问题对象,其中一些问题对象的文本字段值为q1\u text,另一些问题对象的文本字段值为q2\u text为此,我确实使用了此过滤器: Exam.objects.filter(question__te
QuerySet
,这些考试对象的文本包含q1\u text
。此外,我还想筛选这些只包含q1\u文本的考试对象的问题集
这些是我的考试
和问题
模型:
models.py
假设在返回的QuerySet
中存在问题对象,其中一些问题对象的文本字段值为q1\u text
,另一些问题对象的文本字段值为q2\u text
为此,我确实使用了此过滤器:
Exam.objects.filter(question__text__icontains='q1_text')
如果我使用此代码,我会得到考试对象的QuerySet
,但在这些对象的question\u set
中有一些带有文本q2\u text
的问题。但是,我只想要包含q1\u text
的问题,所以对我来说结果不正确
我还需要过滤考试对象的问题集
。所以我用了这个代码:
第二个过滤器
Exam.objects.filter(question__text__icontains='q1_text')[i].question_set.all().filter(text__icontains='q1_text')
但问题是,此代码的输出是问题模型的QuerySet
,但我希望考试模型的QuerySet
具有编辑的问题集
,该问题集只包含其文本
包含的q1\u文本
我的建议:
一种可能的方法是使用第二个过滤器,然后设置
将考试对象的问题集
属性设置为它的输出,但我不知道
如何在代码中实现它
一般来说,我认为我们应该找到一种方法来编辑或过滤问题集
检查对象的
,并在输出中获取这些检查对象的QuerySet
轻松应对,享受与Django ORM一起工作的乐趣
首先,在问题
模型中的考试
字段中添加相关名称
(阅读更多:,)李>
exam=models.Foreign键(考试,相关的考试题,在_delete=models.CASCADE上)
最后,要在filter
方法中设置条件,请使用Q
对象(阅读更多信息:,)。请尝试以下查询:
从django.db.models导入Q
q_对象=q(
Q(问题\考试\考试=您当前的\考试)和Q(问题\考试\文本\包含='q1 \文本')
)
最终结果=Exam.objects.filter(q\U对象)
希望我能帮助你
Exam.objects.filter(question__text__icontains='q1_text')[i].question_set.all().filter(text__icontains='q1_text')