【问题标题】:DJANGO - Reduce amount of field in querysetDJANGO - 减少查询集中的字段数量
【发布时间】:2021-01-05 17:22:36
【问题描述】:

我有一个包含很多字段(约 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'

【问题讨论】:

    标签: django django-queryset


    【解决方案1】:

    您使用.filter(…) [Django-doc] 这确实返回一个单个 Product 对象,而是一个QuerySet Products .因此您不能使用sale.Price,因为它不是单个Product,而是Products 的集合

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-08
      • 2011-09-24
      • 2016-07-10
      • 1970-01-01
      • 2019-05-30
      • 1970-01-01
      • 2023-03-09
      • 2020-03-25
      相关资源
      最近更新 更多