如何使用 Django ORM 排除列的多个值?
Posted
技术标签:
【中文标题】如何使用 Django ORM 排除列的多个值?【英文标题】:How to exclude multiple values of column using 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
【问题讨论】:
【参考方案1】:试试这个。
mytable.objects.exclude(name__in=['', '-'])
这应该排除与您在列表中传递的值匹配的行。
而且您无需通过order_by()
来获取计数。
只需在查询集上直接使用.count()
。
【讨论】:
感谢好友,能够完成我的任务,顺便说一下,我使用order_by()
按名称和计数对值进行排序仅用于测试目的。以上是关于如何使用 Django ORM 排除列的多个值?的主要内容,如果未能解决你的问题,请参考以下文章