django - 从另一个表中获取每条记录的总数
问题描述
嗨,我有 2 张这样的桌子
class Category(models.Model):
typeName= models.CharField(max_length=50 , null=False, blank=False ,choices=typeChoice )
typeImage =models.ImageField( blank=True, null=True , upload_to='ActivityType')
class Products(Activity):
activity = CharField(max_length=50 , null=False, blank=False)
typeofproduct = models.ForeignKey(Category , on_delete=models.CASCADE)
现在在模板中,我想计算每个产品的总数Category
就像我做的那样 Category.objects.all() 。现在对于每个类别,产品表中每个产品的计数。
解决方案
您可以.annotate(..)
[Django-doc]Category
s :
from django.db.models import Count
Category.objects.annotate(
num_products=Count('products')
)
从此查询集中产生的Category
对象将具有包含产品数量的额外属性。.num_products
您还可以使用View
对象的存在对其进行注释,例如:
from django.db.models import Count, Exists, OuterRef
Category.objects.annotate(
num_products=Count('products'),
is_viewed=Exists(View.objects.filter(category=OuterRef('pk')))
)
推荐阅读
- mysql - 仅选择一条重复记录的 SQL 查询,基于该记录中的最高日期值
- caching - 在同一个 gitlab CI 管道中重用 conda 环境?
- c++ - 多个转换运算符导致赋值运算符歧义
- jquery - 为什么 jQuery each() 循环在每次迭代中获取所有迭代的所有元素?
- go - Golang:杜松子酒:获取基本网址
- leaflet - 如何在 Leaflet 中为磁贴请求添加自定义授权标头
- asp.net-mvc - 为 asp.net 身份生成的身份验证 cookie 设置 SameSite cookie 属性(低于 NET 4.7.2)
- python - GurobiError:名称太长(名称长度上限为 255 个字符)
- python - 为什么打开此文件时 Python tkinter 会崩溃?
- react-native - React Native RNPicker 选择