我有以下模型结构:
make BACDL_DEFINE=-DBACDL_MSTP=1 clean all
我想获得与class Chapter:
name = ...
class Atom:
name = ...
chapter = FK(Chapter)
class Question:
title = ...
atom = FK(Atom)
相关的所有Questions
,在本章中按Chapter
分组。
如何处理我知道的许多查询
Atom
我想可以通过使用atoms = Question.objects.filter(atom__chapter__id=1).values_list("atom", flat=True).distinct()
result = {}
for atom in atoms:
result["atom"] = Question.objects.filter(atom__id=atom)
,annotate
和其他Subquery
的员工进行一次查询来完成。这可能吗?
答案 0 :(得分:2)
您可以在一个查询中获取此信息,但是您需要自己执行grappig:
from itertools import groupby
from operator import attrgetter
questions = Question.objects.filter(
atom__chapter_id=1
).order_by('atom')
result = {
k: list(vs)
for k, vs in groupby(questions, attrgetter('atom_id'))
}
这里result
是一个字典,将atom_id
对象列表上的Question
的主键与该atom_id
映射。