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

标签 python django database 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

最佳答案

试试这个。

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

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

并且您不需要执行 order_by() 来获取计数。

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

关于python - 如何使用 Django ORM 排除列的多个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59100435/

相关文章:

django - 想要使用单个脚本运行多个命令

django - 使用自定义 AuthenticationForm 覆盖 Django LoginView 错误消息

java - 锁定数据库记录以实现线程间的并发

python - 我正在尝试理解 Python 中的二进制文件模式

python - Edgewall Trac0.12.3 中缺少 "Users"部分

python - 如何将 apt-get 安装到我的 virtualenv?

java - 如何在android中使用多个搜索参数更新一行?

python - 为什么 StringField 总是 None ?

django - 将我的 signals.py 文件保存在 Django 项目中的正确位置

php - javascript代码中的数据插入到mysql数据库