搜索django中表格中的所有字段

Hul*_*ulk 4 python django

如何使用filter子句ex:table.object.filter(表中的任何字段="sumthing")搜索django中表中的所有字段

谢谢.

Jia*_*aro 13

我同意Alasdair,但你的问题的答案是:

from django.db.models import CharField
from django.db.models import  Q

fields = [f for f in table._meta.fields if isinstance(f, CharField)]
queries = [Q(**{f.name: SEARCH_TERM}) for f in fields]

qs = Q()
for query in queries:
    qs = qs | query

table.objects.filter(qs)
Run Code Online (Sandbox Code Playgroud)

注意:我没有测试过这段代码,但是它应该让你接近你的目标

  • 如果有人想使用像“LIKE”这样的过滤器,请将 [Q(**{f.name: SEARCH_TERM}) for f in fields] 修改为 [Q(**{f.name + "__icontains": SEARCH_TERM}) ) for f in fields] <field_name> + "__icontains" = <pattern> 只是 SQL“<field_name> LIKE <pattern>”。 (2认同)