Python 尝试获取电子商务Django项目中每个项目的总销售额

Python 尝试获取电子商务Django项目中每个项目的总销售额,python,django,django-views,Python,Django,Django Views,付款后,我正在尝试获取已售出商品的总数量 支付订单时ordered=models.BooleanField(默认值=False)变为True 我曾尝试将上下文添加到总销售额中,但没有成功,因此我将其保留在下面的代码中,但对其进行了注释 我还尝试添加一个带有total count的函数,但我一直得到“Item”对象没有属性“order\u set”我把它放在下面作为参考 这是Item models.py class Item(models.Model): title = models.Ch

付款后,我正在尝试获取已售出商品的总数量

支付订单时
ordered=models.BooleanField(默认值=False)
变为
True

我曾尝试将上下文添加到总销售额中,但没有成功,因此我将其保留在下面的代码中,但对其进行了注释

我还尝试添加一个带有total count的函数,但我一直得到
“Item”对象没有属性“order\u set”
我把它放在下面作为参考

这是Item 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 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()
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 %}
{% for item in items %}
    <tr>
        <td>No. of Sold:</td>
        <td>{{ item.count_sold }}</td>
    </tr>
{% endfor %}
{items%]中的项的%
售出数量:
{{item.total_selled.all.count}
{%endfor%}
这是我尝试使用count_Seld函数时使用的模板

                                    <tr>-->
<!--                                        <td>No. of Reviews:</td>-->
<!--                                        <td>{{ item.count_sold  }}</td>-->
<!--                                    </tr>
-->

项目没有设置订单,因为这两个模型之间没有关系

  • 项目与OrderItem相关
  • OrderItem与订单相关
也许你可以尝试以下方式:

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.all.count }}</td>
</tr>
{% endfor %}
{% for item in items %}
    <tr>
        <td>No. of Sold:</td>
        <td>{{ item.count_sold }}</td>
    </tr>
{% endfor %}
{items%]中的项的%
售出数量:
{{item.count_selled}
{%endfor%}