Django:一个严重的问题还是有办法解决?

时间:2016-10-02 12:28:34

标签: django django-models django-templates django-views

我在一周内遇到问题,在文档或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 %}

html中的结果是: enter image description here

每个产品都会多次显示。但是,我想只显示一次产品,并将它们各自的值显示在它们旁边的列中。 有没有解决方案?

1 个答案:

答案 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)