【发布时间】:2022-01-20 10:24:30
【问题描述】:
我想获取查询类型并显示该类型中每个产品的计数
在views.py中
def current(request):
act=enquiry.objects.filter(type='Activity').values('product_name').distinct().annotate(Count('product_name'))
wal=enquiry.objects.filter(type='Walkin').values('product_name').distinct().annotate(Count('product_name'))
tele=enquiry.objects.filter(type='Tele').values('product_name').distinct().annotate(Count('product_name'))
digital=enquiry.objects.filter(type='Digital').values('product_name').distinct().annotate(Count('product_name'))
在models.py中
class product(models.Model):
product_category=models.CharField(null=True,max_length=5000)
product_category_id=models.CharField(null=True,max_length=5000)
branch=models.CharField(default='',max_length=100)
products=models.CharField(null=True,max_length=5000)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(default=timezone.now)
def __str__(self):
return '{},{}'.format(self.products, self.product_category)
class enquiry(models.Model):
comment=models.CharField(default='',max_length=100,null=False)
branch=models.CharField(default='',max_length=100)
created_at = models.DateField(auto_now_add=True)
updated_at = models.DateTimeField(default=timezone.now)
created_by=models.CharField(default='',max_length=100)
status=models.CharField(default='',max_length=100)
commentupdate=models.CharField(default='',max_length=100)
product=models.ForeignKey(product,models.CASCADE,default='')
product_name=models.CharField(default='',max_length=100)
product_category=models.CharField(default='',max_length=100)
type=(
('Walkin','Walkin'),
('Activity','Activity'),
('TeleEnq','TeleEnq'),
('Digital','Digital'),
)
type=models.CharField(choices=type, default='',max_length=100)
status_type=(
('Retail','Retail'),
('Closed','Closed'),
)
status_update=models.CharField(choices=status_type, default='open',max_length=100)
在html中
{%for pr in act%}
<tr>
<td>{{forloop.counter}}</td>
<td>{{pr.product_name}}</td>
<td>{{pr.product_name__count}}</td>
{%endfor%}
{%for pr in wal%}
<td>{{pr.product_name__count}}</td>
{%endfor%}
{%for pr in tele%}
<td>{{pr.product_name__count}}</td>
{%endfor%}
{%for pr in digital%}
<td>{{pr.product_name__count}}</td>
{%endfor%}
</tr>
我想要这样的输出:
| product | walkin | Activity | Tele | DIgital | Total |
|---|---|---|---|---|---|
| p1 | 4 | 1 | 3 | 0 | 8 |
| p2 | 0 | 6 | 0 | 1 | 7 |
| p3 | 2 | 1 | 3 | 0 | 6 |
| p4 | 3 | 2 | 0 | 4 | 9 |
| :------: | :------: | :-------: | :----: | :-------: | :-----: |
| total | 9 | 10 | 6 | 5 | 30 |
【问题讨论】:
标签: python django filter jinja2