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
对象,但是QuerySet
个 Product
。因此,您不能使用 sale.Price
,因为它不是单个 Product
,而是 Product
的 集合 。
您应该使用 .get(…)
[Django-doc] 来检索 Product
对象 。由于.get(…)
会立即查询,所以需要在前面加上.only(…)
子句:
sale = Product.objects.only('Origin', 'Price')<b>.get(id=2)</b>
我有一个包含很多字段 (~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
对象,但是QuerySet
个 Product
。因此,您不能使用 sale.Price
,因为它不是单个 Product
,而是 Product
的 集合 。
您应该使用 .get(…)
[Django-doc] 来检索 Product
对象 。由于.get(…)
会立即查询,所以需要在前面加上.only(…)
子句:
sale = Product.objects.only('Origin', 'Price')<b>.get(id=2)</b>