【发布时间】:2020-05-06 16:54:27
【问题描述】:
我有两个名为 Buy 和 Sell 的类模型:
class Buy(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE)
image = models.FileField()
date = models.DateField()
buy_price = models.DecimalField(max_digits=6, decimal_places=2)
sell_price = models.DecimalField(max_digits=6, decimal_places=2)
def __str__(self):
return str(self.id)
class Sell(models.Model):
item = models.OneToOneField(Buy, on_delete=models.CASCADE)
date = models.DateField()
discount = models.DecimalField(max_digits=6, decimal_places=2)
total_paid = models.DecimalField(max_digits=6, decimal_places=2)
buyer = models.ForeignKey(Buyer, on_delete=models.CASCADE)
def __str__(self):
return str(self.item)
在模板中,我想显示 Sell 表中的所有记录以及 Buy 表中的图像类属性。
下面是我的view.py:
def sell(request):
buys = []
sells = Sell.objects.order_by('-id')
for sell in sells:
buys.append(Buy.objects.filter(id=str(sell.item)))
context = {'sells': sells, 'buys': buys}
return render(request, 'sell.html', context)
模板:
{% for sell in sells %}
<tr>
<td>{{ sell.item }}</td>
<td>{{ sell.date|date:'d-m-Y' }}</td>
<td>{{ buys[0].image}}</td>
<td>R$ {{ sell.discount }}</td>
<td>R$ {{ sell.total_paid }}</td>
<td>{{ sell.buyer }}</td>
</tr>
{% endfor %}
我想知道是否有一种简单的方法可以做到这一点。我的 view.py 需要一些帮助!
【问题讨论】:
-
不相关,但这个
for循环会很快变坏。也许尝试这样的事情:buys = sells.select_related("item").values_list("item", flat=True)