【问题标题】:Filter model without using distinct method不使用不同方法的过滤模型
【发布时间】:2022-11-22 18:32:19
【问题描述】:

我有一个带有产品列表的模型。每个产品都有一个 ID、价格、品牌等。我想返回品牌名称不同的模型的所有对象。我目前正在使用 django 的内置 SQLite,所以它不支持类似

products = Product.objects.all().distinct('brand')

是否有另一种方法可以退回品牌名称不同的所有物品?

【问题讨论】:

  • 这个问题有点模棱两可。你想要一份品牌清单吗?或者每个品牌的一种(任何?)产品?
  • 我想要产品模型中所有对象的列表,但我不想要具有相同品牌名称的对象。因此,如果我在产品中有 10 个对象,其中 3 个具有“品牌 A”的品牌,我想返回 8 个对象及其所有其他属性。

标签: python django


【解决方案1】:

试试Product.objects.order_by('brand').distinct('brand')

指定字段名称时,必须在 QuerySet 中提供一个 order_by(),并且 order_by() 中的字段必须以 distinct() 中的字段开头,顺序相同。 Refer

【讨论】:

    【解决方案2】:

    尝试这个

    products = Product.objects.values('brand').distinct('brand')
    

    【讨论】:

    • 此数据库后端不支持 DISTINCT ON 字段
    猜你喜欢
    • 2014-09-02
    • 2016-03-09
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2015-03-25
    • 2016-05-14
    相关资源
    最近更新 更多