如何解决Django:按人员顺序计数和显示项目数量
我试图显示一个人订单中有多少种产品。我该怎么做呢?我想在order_detail.html页面中显示商品总数。
下面是我的代码供参考。
models.py:
class Order(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
order_id = models.CharField(max_length=20,default=increment_order_id,null=True,blank=True,editable=False)
location = models.ForeignKey(Location,on_delete=models.CASCADE)
route = models.ForeignKey(Route,on_delete=models.DO_NOTHING,blank=True)
delivery_date = models.DateField()
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
paid = models.BooleanField(default=False)
discount = models.DecimalField(max_digits=10,decimal_places=2,default=0.00)
class OrderItem(models.Model):
order = models.ForeignKey(Order,on_delete=models.PROTECT,related_name='items',null=True)
desc = models.CharField(max_length=500,null=True)
# Item
product = models.ForeignKey(Product,related_name='order_items')
price = models.DecimalField(max_digits=10,default=0.00)
quantity = models.IntegerField(default=1,null=False)
views.py:
@method_decorator(login_required(login_url='account_login'),name='dispatch')
class OrderListView(ListFilteredMixin,ListView):
model = Order
template_name = 'orders/order/list.html'
filter_set = OrderFilter
queryset = Order.objects.all()
@login_required(login_url='account_login')
def order_detail(request,order_id):
order = get_object_or_404(Order,order_id=order_id)
order_item = OrderItem.objects.filter(order=order)
context = {
'order': order,'order_item': order_item
}
return render(request,'orders/order/detail.html',context)
解决方法
将代码更新为此:
class Order(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
order_id = models.CharField(max_length=20,default=increment_order_id,null=True,blank=True,editable=False)
location = models.ForeignKey(Location,on_delete=models.CASCADE)
route = models.ForeignKey(Route,on_delete=models.DO_NOTHING,blank=True)
delivery_date = models.DateField()
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
paid = models.BooleanField(default=False)
discount = models.DecimalField(max_digits=10,decimal_places=2,default=0.00)
def count_items(self):
return self.items.count()
然后以{{ order.count_items }}
的html格式调用
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。