我在下表中有以下查询,但我的输出返回产品 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)
........
答案 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)