From fbe0e85a53e0ab3f8463ae4fc6e0a57a86c2f433 Mon Sep 17 00:00:00 2001 From: Time <80127895@qq.com> Date: Fri, 28 Jul 2023 21:15:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E:=E6=94=AF=E6=8C=81=E6=97=A5?= =?UTF-8?q?=E6=9C=9F&=E6=97=B6=E9=97=B4=E8=8C=83=E5=9B=B4=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2;=20=E4=BF=AE=E5=A4=8D:=E6=9F=A5=E8=AF=A2=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E4=B8=BA''=E8=BF=87=E6=BB=A4=E5=99=A8=E6=8A=A5?= =?UTF-8?q?=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/dvadmin/utils/filters.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/backend/dvadmin/utils/filters.py b/backend/dvadmin/utils/filters.py index ad3d056..a2b470a 100644 --- a/backend/dvadmin/utils/filters.py +++ b/backend/dvadmin/utils/filters.py @@ -351,11 +351,16 @@ class CustomDjangoFilterBackend(DjangoFilterBackend): queries = [] for search_term_key in filterset.data.keys(): orm_lookup = self.find_filter_lookups(orm_lookups, search_term_key) - # print(search_term_key, orm_lookup) - if not orm_lookup: + if not orm_lookup or filterset.data.get(search_term_key) == '': continue - query = Q(**{orm_lookup: filterset.data[search_term_key]}) - queries.append(query) + filterset_data_len = len(filterset.data.getlist(search_term_key)) + if filterset_data_len == 1: + query = Q(**{orm_lookup: filterset.data[search_term_key]}) + queries.append(query) + elif filterset_data_len == 2: + orm_lookup += '__range' + query = Q(**{orm_lookup: filterset.data.getlist(search_term_key)}) + queries.append(query) if len(queries) > 0: conditions.append(reduce(operator.and_, queries)) queryset = queryset.filter(reduce(operator.and_, conditions))