我正试着弄到总的不是。 在付款后出售物品的。
当订单支付时,ordered=models.BooleanField(default=false)
变为true
我已经尝试添加与销售总额的上下文,但它没有工作,所以我保留在下面的代码,但注释了它。
我还尝试添加一个带有总数的函数,但我一直得到“item”对象没有属性'order_set'
,我将其保留在下面以供参考
下面是项目models.py。
class Item(models.Model):
title = models.CharField(max_length=100)
def __str__(self):
return self.title
# def count_sold(self):
# return self.order_set.filter(ordered=True).count()
下面是OrderItemModels.py。
class OrderItem(models.Model):
ordered = models.BooleanField(default=False)
item = models.ForeignKey(Item, on_delete=models.CASCADE)
这是订单
class Order(models.Model):
items = models.ManyToManyField(OrderItem)
ordered = models.BooleanField(default=False)
这是views.py。
class DesignerOnlyPostListView(ListView):
model = Item
template_name = "designer_only_posts.html"
context_object_name = 'items'
paginate_by = 6
def get_queryset(self):
user = get_object_or_404(User, username=self.kwargs.get('username'))
return Item.objects.filter(designer=user).order_by('-timestamp')
def get_context_data(self, **kwargs):
comments = Comment.objects.all()
# total_sold = Order.objects.all()
context = super().get_context_data(**kwargs)
context["total_comments"] = comments.count()
# context["total_sold"] = total_sold.count()
return context
这是模板
{% for item in items %}
<tr>
<td>No. of Sold:</td>
<td>{{ item.total_sold.all.count }}</td>
</tr>
{% endfor %}
这是我试图使用count_seld函数时的模板
<tr>-->
<!-- <td>No. of Reviews:</td>-->
<!-- <td>{{ item.count_sold }}</td>-->
<!-- </tr>
Item没有order_set,因为这两个模型之间没有关系。
也许你可以尝试一下:
class Item(models.Model):
title = models.CharField(max_length=100)
def __str__(self):
return self.title
@property
def count_sold(self):
return self.orderitem_set.filter(ordered=True).count()
和模板
{% for item in items %}
<tr>
<td>No. of Sold:</td>
<td>{{ item.total_sold }}</td>
</tr>
{% endfor %}