如何使用 Django ORM 排除列的多个值?

Moo*_*oon 6 python database django postgresql orm

我想过滤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

Suk*_*djf 3

尝试这个。

mytable.objects.exclude(name__in=['', '-'])
Run Code Online (Sandbox Code Playgroud)

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

而且你不需要做任何事情order_by()来获得计数。

只需使用.count()直接查询集即可。