擅长:python、mysql、java
<p>您可以使用<code>TruncWeek</code>和<code>TruncYear</code>:</p>
<pre><code>from django.db.models.functions import TruncWeek, TruncYear
count_for_week = myModel.objects.annotate(
week=TruncWeek('created_at'),
).values(
'week',
).annotate(
count=Count('id'),
)
count_for_year = myModel.objects.annotate(
year=TruncYear('created_at'),
).values(
'year',
).annotate(
count=Count('id'),
)
</code></pre>
<p>因此,您将拥有:</p>
<pre><code> <QuerySet [{'week': datetime.datetime(2019, 2, 18, 0, 0, tzinfo=<UTC>), 'count': 1}]>
</code></pre>
<p>其中<code>week</code>或<code>year</code>值将是该范围的开始日期时间:一年中的一周</p>
<p>更多细节可以在Django文档<a href="https://docs.djangoproject.com/en/2.1/ref/models/database-functions/#datefield-truncation" rel="nofollow noreferrer">here</a>中阅读。你知道吗</p>