DJANGO - 减少查询集中的字段数量

DJANGO - Reduce amount of field in queryset

我有一个包含很多字段 (~50) 的模型产品。 我有一个像这样的过滤器:

sale = Product.objects.filter(id=2)

但这为我提供了 id = 2 的所有 50 个字段,因此我尝试添加 only 以减少查询集大小,因为我只需要 2 个字段:

sale = Product.objects.filter(id=2).only("Origin","Price")

现在我想通过 sale.Price 访问价格,但出现错误

'QuerySet' object has no attribute 'Price'

您使用 .filter(…) [Django-doc] 不是 return 一个 单个 Product 对象,但是QuerySetProduct。因此,您不能使用 sale.Price,因为它不是单个 Product,而是 Product 集合

您应该使用 .get(…) [Django-doc] 来检索 Product 对象 。由于.get(…)会立即查询,所以需要在前面加上.only(…)子句:

sale = Product.objects.only('Origin', 'Price')<b>.get(id=2)</b>