【发布时间】:2015-12-10 15:26:27
【问题描述】:
我正在尝试在 django sqlite db 中实现搜索。
我得到了一个未知长度的参数列表,这些参数都应该与“LIKE”匹配。这意味着我想要所有与至少一个参数匹配的对象。
正如我从 django 文档中看到的那样,我可以通过使用 Q 对象来实现这一点。
例子:
Students.objects.get(
Q(name_contains='franz') |
Q(birthdate_date=date(2005, 5, 2) |
Q(param3_contains='lorem'
)
现在我的问题是,我如何处理它以加入从 params 创建的所有 Q 对象作为参数传递给 objects.get()。我找不到任何关于此的内容。
这里的另一个问题是处理几种不同的字段查找类型。
感谢您提供的任何建议、帮助或帮助链接。谢谢。
【问题讨论】:
-
不清楚您所说的“加入 Q 对象”是什么意思,如果您想将它们组合在一起,您可以使用
&。此外,您的示例似乎具有不正确的字段查找语法,它应该类似于带有两个下划线的name__contains。 -
我的意思是我不知道我得到了哪些参数。所以它可以是 2、3 或 7 个参数。我不得不遍历它们,将它们放入 Q 对象中,然后将它们作为参数传递给我的 get 函数。但我不知道如何将这些论点与 | 结合在一起。所以我明确地想使用 OR。
-
查看我在此线程中对类似问题的回答:stackoverflow.com/a/65720209/4313735
标签: python django join querying django-q