我有2个字段,总年度叶和年采取的叶子, 使用.aggregate(Sum())
我已经计算了一个雇员的年度总采伐量。蟒蛇 - 用.aggregate(Sum())结果减去字段值
,但现在我要计算用户可用的,这是
年度总叶剩下的叶子 - 采取
年总叶子,但我无法这样做,因为annual_taken
是一个字符串,而不是浮动
它给我这个错误:
不支持的操作数类型为 - :'float'和'str'
我该如何解决这个问题?任何帮助深表感谢
下面是我的代码: model.py
class LeavesEntitlement(models.Model):
employee = models.ForeignKey(Employee, on_delete=models.CASCADE, related_name='+')
type = models.ForeignKey(LeavesType, on_delete=models.CASCADE, related_name='+')
days = models.FloatField(null=True, blank=True)
class Leave(models.Model):
employee = models.ForeignKey(Employee, on_delete=models.CASCADE, related_name='+')
type = models.ForeignKey(LeavesType, on_delete=models.CASCADE, related_name='+')
duration = models.FloatField()
View.py
def my_leaves_view(request):
annual = LeavesEntitlement.objects.all().filter(employee=request.user.profile.employee.id, type=1)
annual_taken = Leave.objects.all().filter(employee=request.user.profile.employee.id, type=1).aggregate(Sum('duration'))
for annual_field in annual:
for field in annual_taken:
annual_available = annual_field.days - field
context = {'form': form,
'annual': annual,
'annual_taken': annual_taken,
'annual_available': annual_available
}
return render(request, 'hrm/my_leaves/my_leaves_content.html', context)
HTML
<table id="my_entitlement_table" class="display table table-hover table-responsive" width="100%">
<thead>
<tr>
<th class="small text-muted text-uppercase"><strong>Leave Type</strong></th>
<th class="small text-muted text-uppercase"><strong>Total</strong></th>
<th class="small text-muted text-uppercase"><strong>Taken</strong></th>
<th class="small text-muted text-uppercase"><strong>Available</strong></th>
</tr>
</thead>
<tbody>
{% for annual_field in annual %}
<tr>
<td>{{annual_field.days}}</td>
<td>{{annual_taken.duration__sum}}</td>
<td>{{annual_available}}</td>
</tr>
{% endfor %
</tbody>
在您的问题中包含完整的追溯 –
好的,一会儿。 –