<p>通过使用<a href="https://docs.djangoproject.com/en/2.2/ref/models/querysets/#gte" rel="nofollow noreferrer">^{<cd1>}</a>和<a href="https://docs.djangoproject.com/en/2.2/ref/models/querysets/#lte" rel="nofollow noreferrer">^{<cd2>}</a>django查找,您基本上可以进行一个查询来获取一年中所有相关的叶子。
例如:</p>
<pre class="lang-py prettyprint-override"><code>import datetime
leaves = Leave.objects.filter(
leavedatefrom__gte=datetime.date(2019, 1, 1),
leavedateto__lte=datetime.date(2019, 12, 31)
)
</code></pre>
<p>然后检查所有的叶子,计算它们之间的天数差,并将其相加为另一个变量:</p>
<pre><code>total_days = 0
for leave in leaves:
total_days += (leave.leavedateto - leave.leavedatefrom).days
print total_days
</code></pre>
<p>有关计算日期范围的详细信息和选项,请参见<a href="https://stackoverflow.com/questions/151199/how-to-calculate-number-of-days-between-two-given-dates">How to calculate number of days between two given dates?</a>。你知道吗</p>
<p><strong>编辑:</strong>
如果您不想每次迭代都命中DB,可以进行一个优化,即使用django<a href="https://docs.djangoproject.com/en/2.1/ref/models/querysets/#values-list" rel="nofollow noreferrer">^{<cd3>}</a>:</p>
<pre><code>leaves = Leave.objects.filter(
leavedatefrom__gte=datetime.date(2019, 1, 1),
leavedateto__lte=datetime.date(2019, 12, 31)
).values_list('leavedatefrom', 'leavedateto')
total_days = 0
for leavedateto, leavedatefrom in leaves:
total_days += (leavedateto - leavedatefrom).days
print total_days
</code></pre>