从数据库获取视图的上下文



我想在发票html页面内显示此上下文,但我似乎被困在获取数据。我希望这些数据显示在发票页面。目前,它给我错误:" QuerySet'对象没有属性'产品"

models.py:

class PurchaseItem(models.Model):
product = models.ForeignKey(Item, on_delete=models.CASCADE)
quantity = models.PositiveSmallIntegerField()
purchase_price = models.DecimalField(max_digits=6, decimal_places=2)
paid_amount = models.DecimalField(max_digits=6, decimal_places=2)

views.py:

def get_context_data(request, **kwargs):
purchases = PurchaseItem.objects.all()
context={
"company": {
"name": "Mc-Services",
"address": "1080, Vienna, Austria",
"phone": "(818) XXX XXXX",
"email": "contact@mcservice---.com",
'product': purchases.product,
'price' : purchases.product.price,
'quantity' : purchases.quantity,
}}
return render(request, 'purchase/pdf_template.html', context)

和HTML文件

pdf_template.html:

<tbody>
{% for purchase in purchases %}
<tr>
<td class="no" >{{purchase.product}}</td>
<td class="qty" >{{purchase.quantity}}</td>
<td class="total" >${{purchase.product.price}}</td>
</tr>
{% endfor %}
</tbody>

错误:purchases = PurchaseItem.objects.all()

在您的代码中,purchases是所有购买的集合,但随后您尝试将其用作单个购买。你需要从集合中取一个元素。例如,如果您想要最新的项目,您可以使用purchases = PurchaseItem.objects.last()

你可能需要这样做

def get_context_data(request, **kwargs):
purchases = PurchaseItem.objects.all()
context={
"company": {
"name": "Mc-Services",
"address": "1080, Vienna, Austria",
"phone": "(818) XXX XXXX",
"email": "contact@mcservice---.com",
'purchases': purchases,
}}
return render(request, 'purchase/pdf_template.html', context)

,然后使用相同的HTML模板显示所有的购买

最新更新