簡體   English   中英

計算Django中的外鍵

[英]Count foreign key in django

我正在使用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語句:

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

我的代碼:

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)

我需要查看供應商的名稱以及每個供應商的數量產品

如何建立相同的關系以加載具有該結果的列表?

要獲得所有供應商的產品數量,可以使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM