File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ import functools
2+ import operator
13from typing import Any
24from uuid import UUID
35
6+ from tortoise .expressions import Q
7+
48from fastadmin .models .base import InlineModelAdmin , ModelAdmin
59from fastadmin .models .schemas import ModelFieldWidgetSchema , WidgetType
610from fastadmin .settings import settings
@@ -244,11 +248,13 @@ async def orm_get_list(
244248 qs = qs .filter (** {f"{ field } __{ condition } " if condition != "exact" else field : value })
245249
246250 if search and self .search_fields :
247- ids = []
248- for f in self .search_fields :
249- qs = qs .filter (** {f + "__icontains" : search })
250- ids += await qs .values_list (self .get_model_pk_name (self .model_cls ), flat = True )
251- qs = qs .filter (id__in = set (ids ))
251+ qs = qs .filter (
252+ functools .reduce (
253+ operator .or_ ,
254+ (Q (** {f + "__icontains" : search }) for f in self .search_fields ),
255+ Q (),
256+ )
257+ )
252258
253259 if sort_by :
254260 qs = qs .order_by (sort_by )
You can’t perform that action at this time.
0 commit comments