来自django中多个模型的复杂查询

Complex Query from several models in django

我正在尝试查询三个模型。我需要获取商店区域位置中的产品数量。这些是我的模型:

class Store(models.Model):

    name = models.CharField(max_length=255)
    logo = models.URLField(null=True, blank=True)
    user = models.OneToOneField(get_user_model(), models.CASCADE,
                                related_name="user_store")
    region = models.CharField("Departamento", max_length=100)
    city = models.CharField("Ciudad", max_length=100)

class Product(models.Model):

    name = models.CharField("Nombre del Producto", max_length=255)
    description = models.TextField()
    stock = models.PositiveIntegerField()
    seller = models.ForeignKey(User, on_delete=models.CASCADE)

产品与用户相关,与店铺相关,我想做的是这样的:

{
    "Risaralda": 1523,
    "Cundinamarca": 8541
}

其中键 "Risaralda" 和 "Cundinamarca" 是地区,值是这些地方的产品数量

我试过这样的东西

products = Product.objects.filter(
    seller__user_store__region__in=Store.objects.filter()
    .values("region").distinct())

我在商店区域有产品,但我需要计算每个商店区域有多少产品

非常感谢

像这样应该可以解决问题:

from django.db.models import F
from django.db.models import Count


Product.objects.annotate(region=F('seller__user_store__region')).annotate(num_products=Count('id')).values_list('region', 'num_products')