我的查询返回一个 Id 而不是实际值

时间:2021-04-14 23:52:25

标签: django django-models

我在下表中有以下查询,但我的输出返回产品 ID 而不是产品名称。任何建议或帮助将不胜感激。

#my query
Stock.objects.values('name').annotate(List=Count('name'), total=Sum('quantity'))

#model.py
class Product (models.Model):
      name = models.CharField(max_length=100, blank=True, null=True)
     

 class Stock (models.Model):
      name = models.ForeignKey(Product, on_delete=models.CASCADE)
      quantity = models.IntegerField(defualt=0)
      ........

1 个答案:

答案 0 :(得分:0)

当您使用 values 时,它会为您提供一个值字典,任何 ForeignKey 都表示为其 ID(因为它们以这种方式存储在列中)。

由于您需要 Product 实例的信息,您应该改为在 Product 上进行查询并在此查询集上注释您想要的信息:

from django.db.models import Count, Sum


products = Product.objects.annotate(List=Count('stock'), total=Sum('stock__quantity'))

for product in products:
    print(product.name, product.List, product.total)