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

时间:2019-12-04 20:50:12

标签: django python-3.x django-models django-orm django-filter

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

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())

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

非常感谢

1 个答案:

答案 0 :(得分:0)

类似这样的事情应该可以解决:

methods = (SubClass.instance_methods - SubClass.superclass.instance_methods).map(&:to_s)
methods.select { |method| !method.end_with?('=') && methods.include?(method + '=') }
#> ["id", "title", "body"]