擅长:python、mysql、java
<p>我想我有点晚了。您可以在一个SQL查询中获得天数的总和</p>
<pre><code>from django.db.models import F, IntegerField, ExpressionWrapper, Sum
Leave.objects.filter(...).annotate(
diff_date_in_integer=ExpressionWrapper(F('leavedateto') - F('leavedatefrom'), output_field=IntegerField())
).annotate(
diff_date_in_days=ExpressionWrapper(F('diff_date_in_integer') / (1000000 * 60 * 60 * 24), output_field=IntegerField())).aggregate(
sum=Sum('diff_date_in_days'))</code></pre>
<p>在<strong><code>filter(...)</code></strong>子句中,可以添加过滤条件,例如<code>datetime</code>或<em><code>user specific data</code></em></p>
<hr/>
<h3>说明</h3>
<ol>
<li>在<strong><em>“integer”</em></strong>格式(在<code>diff_date_in_integer</code>注释字段中)中注释<strong><code>leavedateto</code></strong>和<strong><code>leavedatefrom</code></strong>之间的差异<br/></li>
<li>将<strong><code>diff_date_in_integer</code></strong>数据转换为<strong><code>days</code></strong><br/></li>
<li>使用<strong><code>aggregate()</code></strong>函数和<strong><code>Sum()</code></strong>DB函数,我们求出总天数。你知道吗</li>
</ol>