当前位置: 首页 > 面试题库 >

如何在Django queryset过滤中执行不等于?

南门鸿雪
2023-03-14
问题内容

在Django模型QuerySets中,我看到比较值存在__gt__lt,但是存在__ne// !=/ <>(不等于?)。

我想使用不等于过滤掉:

例:

Model:
    bool a;
    int x;

我想要

results = Model.objects.exclude(a=true, x!=5)

!=不正确的语法。我试过__ne,<>

我最终使用:

results = Model.objects.exclude(a=true, x__lt=5).exclude(a=true, x__gt=5)

问题答案:

也许Q对象可以帮助解决此问题。我从未使用过它们,但似乎可以将它们取反并组合起来,就像普通的python表达式一样。

更新:我只是尝试了一下,它似乎工作得很好:

>>> from myapp.models import Entry
>>> from django.db.models import Q

>>> Entry.objects.filter(~Q(id = 3))

[<Entry: Entry object>, <Entry: Entry object>, <Entry: Entry object>, ...]


 类似资料:
  • 问题内容: 我在客户端有一组对象。数组中的对象如下所示: 我尝试将此数组过滤为2个数组: 类型=== 1 使用类型!== 1 我这样做: 但是不相等的方法不起作用…我该怎么办? 谢谢! 问题答案: 同样,如果您只是要使用,请改用本机方法:

  • 问题内容: 我需要从Django模板中执行过滤查询,以获取与视图中的python代码等效的一组对象: 在我的模板中,我想做 但我似乎无法找出如何编写FILTER。 问题答案: 你不能这样做,这是设计使然。Django框架的作者打算将表示代码与数据逻辑严格分开。过滤模型是数据逻辑,而输出HTML是表示逻辑。 因此,你有几种选择。最简单的方法是进行过滤,然后将结果传递给。或者,你可以在模型中编写一个方

  • 问题内容: 我希望能够列出用户已添加的项目(他们被列为创建者)或已被批准的项目。 所以我基本上需要选择: 我将如何在Django中执行此操作?(最好使用过滤器或查询集)。 问题答案: 有些对象允许进行复杂的查找。例:

  • 问题内容: 似乎是一个非常基本的问题,但我无法正确使用语法。 我想要的是显示id不是-1的所有问题。我究竟做错了什么。谢谢! 问题答案: 语法稍有不足,请尝试: 看到一点JSFiddle:http : //jsfiddle.net/U3pVM/3845/ 编辑: 变量示例:

  • 我需要对setter方法进行一些过滤,并考虑修改它们,例如: 我不记得有任何这样的实现,它可能不合法(或至少不合适)。我是否应该编写名为的附加setter方法,将作为默认值?这种方式似乎不是打破豆子的方法。 第三个选项是像这样准备单独的过滤器类: 我认为这是常用的用法;但是第二种选择似乎更接近面向对象方法。哪种方式是正确的方式?

  • 问题内容: 我正在尝试获取IP范围查询以处理一组文档,但是没有任何结果。 映射(我已经尝试了和): 数据看起来像这样(许多实例的值都不同) 现在,我去看了官方的ES文档,但是没有IP范围示例,但是我在Git上找到了一个不起作用的示例。它看起来如下: 当我用手指指住字段和地址时,上面的方法引发了一些令人鼓舞的解析错误,但最终没有返回结果。 我还尝试了标准范围语法: 这也没有返回结果。如何查询一系列I