在django中计算外键

时间:2017-06-02 14:24:51

标签: python django

我正在使用python3在django 1.11中对产品和供应商进行一些统计,问题是我不知道如何关联模型:

sum = sum + ( sum + d )

使用以下sql语句:

class Proveedor(models.Model):
    nombre_empresa = models.CharField(max_length=150)
    direccion = models.TextField()
    telefono = models.IntegerField()
    fecha_registro = models.DateField(auto_now_add=True)

    def __str__(self):
        return self.nombre_empresa

class Producto(models.Model):
    nombre_producto = models.CharField(max_length=150)
    descripcion = models.TextField()
    precio = models.IntegerField()
    proveedor = models.ForeignKey(Proveedor)
    fecha_registro = models.DateField(auto_now_add=True)

    def __str__(self):
        return self.nombre_producto

我的代码:

select nombre_empresa,count(prod.id_proveedor) from productos prod,proveedores prov where prod.id_proveedor=prov.id_proveedor group by nombre_empresa

我需要查看供应商的名称以及每个供应商的数量产品

如何使用该结果加载相同的关系?

1 个答案:

答案 0 :(得分:1)

要向所有供应商提供每种产品的数量,您可以使用annotate()

sup_with_prod = Proveedor.objects.annotate(num_prod=Count('producto'))

你可以访问这样的产品数量:

sup_with_prod[0].num_prod

为第一个供应商,依此类推。或者,在您的情况下:

for supplier in sup_with_prod:
    nr_products = supplier.num_prod