擅长:python、mysql、java
<p>查询通常是“平面的”,因为它不包含层次结构。但是,您可以自己对对象进行后期处理。我们可以使用<a href="https://docs.python.org/3/library/itertools.html#itertools.groupby" rel="nofollow noreferrer"><strong>^{<cd1>}</strong> function [python-doc]</a>:</p>
<pre><code>from itertools import groupby
from operator import attrgetter
qs = Article.objects.select_related(
'section'
).order_by('section__order', 'section_id', 'order')
result = {
section: list(articles)
for section, articles in groupby(qs, attrgetter('section'))
}</code></pre>
<p>请注意,尽管Python字典使用插入顺序(因为<a href="/questions/tagged/python-3.7" class="post-tag" title="show questions tagged 'python-3.7'" rel="tag">python-3.7</a>),但是如果您使用不同的格式(如JSON),那么在不同的环境(JavaScript等)中,插入顺序本身就不会得到尊重</p>