Итоги\Промежуточные итоги в Django
Я новичок в django и у меня есть проблема с получением правильного макета отчета. У меня есть модель Contract, и у меня есть определенные проблемы с получением следующего макета отчета:
Bussines unit: x
contractnox client1 net_price vat price
contractnoy client2 net_price vat price
.....
Bussines unit x subtotals: net_price, vat, price
Bussines unit: y
you get the point
Totals in the end.
Моя модель контракта выглядит следующим образом:
class Contract(models.Model):
contract_no = models.IntegerField(verbose_name='Number:')
client= models.CharField( max_length=50, verbose_name='Client:')
address = models.CharField( max_length=50, verbose_name='Address:')
date = models.DateField(default=timezone.now, verbose_name='Contract date:')
price = models.FloatField(max_length=10,default=10.00, verbose_name='Price:')
vat = models.FloatField(max_length=10,default=0.00, verbose_name='VAT:')
net_price = models.FloatField(max_length=10,default=0.00, verbose_name='Net price:')
canceled = models.BooleanField(default=False, verbose_name='Canceled:')
business_unit=models.ForeignKey('BussinesUnit', on_delete=models.CASCADE, verbose_name='Bussines unit')
Я попробовал это в режиме просмотра:
b_units= BussinesUnit.objects.all()
contract= Contract.objects.filter(canceled=False)
data={}
for unit in b_units:
data[unit] = contract.filter(business_unit=unit.pk),\
contract.filter(business_unit=unit.pk).aggregate(price_sub=Sum('price')),\
contract.filter(business_unit=unit.pk).aggregate(net_price_sub=Sum('net_price')),\
contract.filter(business_unit=unit.pk).aggregate(vat_sub=Sum('vat')),\
contract.filter(business_unit=unit.pk).aggregate(items_sub=Count('contract_no'))
context = {
'bussines_units': data
}
В отчете я сделал следующее:
{% for data, data_items in bussines_units.items %}
{{ data }}
<div>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class='detailsCenter' style="width: 5.5%">Contract</td>
<td class='detailsCenter' style="width: 33%">Client</td>
<td class='detailsCenter'style="width: 28.5">Adress</td>
<td class='detailsRight'style="width: 11%">Net price</td>
<td class='detailsRight' style="width: 11%">VAT</td>
<td class='detailsRight' style="width: 11%">Price</td>
</tr>
{% for data in data_items%}
{% for x in data%}
<tr>
<td class='detailsCenter' style="width: 5.5%">{{x.contract_no}}</td>
<td class='details' style="width: 33%">{{x.client}}</td>
<td class='detailsCenter'style="width: 28.5%">{{x.adress}}</td>
<td class='detailsRight'style="width: 11%">{{x.net_price}}</td>
<td class='detailsRight'style="width: 11%">{{x.vat}}</td>
<td class='detailsRight'style="width: 11%">{{x.price}}</td>
</tr>
{%endfor%}
<tr>
<td class='detailsCenter' style="width: 5.5%"></th>
<td class='details' style="width: 33%">Subtotal</th>
<td class='detailsCenter'style="width: 28.5%">{{data.items_sub}}</td>
<td class='detailsRight'style="width: 11%">{{data.net_price_sub}}</td>
<td class='detailsRight'style="width: 11%">{{data.vat_sub}}</td>
<td class='detailsRight'style="width: 11%">{{data.price_sub}}</td>
</tr>
{% endfor %}
</table>
</div>
{% endfor %}
Я получаю требуемые результаты, но промежуточные итоги, похоже, размещаются в нескольких строках, а я хочу, чтобы они размещались в одной строке, поэтому любая помощь в этом вопросе была бы замечательной. Прилагается скриншот разбросанных элементов.
введите описание изображения здесь
Я использую xhtml2pdf для получения отчетов в формате pdf, если это может быть полезно для этой проблемы.