在djang中计数外键

2024-06-02 10:18:19 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

使用以下sql语句:

^{pr2}$

我的代码:

from app.models import Producto,Proveedor

productos = Producto.objects.all() # How do I do the filter ?
for producto in productos:
    nombre_producto = producto.nombre_producto
    proveedor = len(producto.proveedor)

我需要看到供应商的名称和每个供应商的产品数量

如何建立相同的关系来加载具有该结果的列表?在


Tags: selfmodelmodelslength供应商maxclasstextfield
1条回答
网友
1楼 · 发布于 2024-06-02 10:18:19

要获得所有供应商的产品数量,您可以使用^{}

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

您可以访问如下产品的数量:

^{pr2}$

对于第一个供应商,以此类推。或者,在你的情况下:

for supplier in sup_with_prod:
    nr_products = supplier.num_prod

相关问题 更多 >