【问题标题】:How to exclude multiple values of column using Django ORM?如何使用 Django ORM 排除列的多个值?
【发布时间】:2020-03-24 19:03:46
【问题描述】:

我想过滤 mytable 并获取名称不包含 '''-' 值的行,为此我使用了以下查询但不起作用。

mytable.objects.exclude(name = ['','-']).order_by('name').count() 返回 2000 个所有行,而查询 mytable.objects.exclude(name = '').order_by('name').count() 工作正常并返回过滤后的 1460 个结果。

下面是我的 Postgresql 查询,它运行良好,返回 1450 结果,不包括 ['','-'] 的名称值。

select * from mytable where name != '-' and name != '' order by -id

【问题讨论】:

    标签: python django database postgresql orm


    【解决方案1】:

    试试这个。

    mytable.objects.exclude(name__in=['', '-'])
    

    这应该排除与您在列表中传递的值匹配的行。

    而且您无需通过order_by() 来获取计数。

    只需在查询集上直接使用.count()

    【讨论】:

    • 感谢好友,能够完成我的任务,顺便说一下,我使用order_by() 按名称和计数对值进行排序仅用于测试目的。
    猜你喜欢
    • 2011-11-05
    • 1970-01-01
    • 2021-10-07
    • 2010-10-06
    • 2020-02-13
    • 2021-08-25
    • 2023-03-14
    • 2018-06-28
    • 1970-01-01
    相关资源
    最近更新 更多