我在一周内遇到问题,在文档或stackoverflow中找不到任何解决方案。
问题是多个模型的注释。如果我们对多个模型进行注释,则结果不正确。在此处提出的票证仍然打开,因此我们无法对多个模型进行注释。完成。
现在我有一种不同的注释方法如下:
inventory_purchase=productmodel.objects.filter(company=request.user.company.entity)
purchase=inventory_purchase.annotate(purchase=Sum('exproduct__Quantity'))
sale = inventory_purchase.annotate(sale=Sum('serviceproduct__Quantity'))
purchase_return = inventory_purchase.annotate(purchase_return=Sum('dnproduct__Quantity'))
sales_return = inventory_purchase.annotate(sales_return=Sum('cnproduct__Quantity'))
inventory_movement = sorted(chain(purchase,sale,purchase_return,sales_return))
return render(request,'account/inventorymovement.html',{'inventory_movement':inventory_movement})
我所做的是,分别注释每个模型。现在我有所需的正确数据。 但是,这在模板渲染中产生了一个问题。我的模板是:
{% for invoices in inventory_movement %}
<tr>
<td>{{ invoices.product_name }}</td>
<td>+{{ invoices.purchase|default:0 }} </td>
<td>-{{ invoices.sale|default:0 }}</td>
<td>+{{ invoices.sales_return|default:0 }}</td>
<td>-{{ invoices.purchase_return|default:0 }}</td>
<td>-</td>
</tr>
{% endfor %}
每个产品都会多次显示。但是,我想只显示一次产品,并将它们各自的值显示在它们旁边的列中。 有没有解决方案?
答案 0 :(得分:1)
您还没有显示inventory_movement
是什么或者您是如何构建它的。但是你肯定只需要在每个注释中添加正确的元素:
inventory_movement = []
for (p, s, pr, sr) in zip(purchase, sale, purchase_return, sales_return):
invoices = {}
invoices['purchase'] = p.purchase
invoices['sale'] = s.sale
invoices['purchase_return'] = pr.purchase_return
invoices['sales_return'] = sr.sales_return
inventory_movement.append(invoices)