@@ -46,12 +46,13 @@ def filter_by_partner_program(cls, queryset, name, value):
4646 return User .objects .none ()
4747
4848 @classmethod
49- def filter_age__gte (cls , queryset , name , value ):
50- return queryset .filter (birthday__gte = datetime .datetime .now () - relativedelta (years = int (value )))
51-
52- @classmethod
53- def filter_age__lte (cls , queryset , name , value ):
54- return queryset .filter (birthday__lte = datetime .datetime .now () - relativedelta (years = int (value )))
49+ def filter_age (cls , queryset , name , value ):
50+ start , stop = map (int , value .split ("," ))
51+ start , stop = min (start , stop ), max (start , stop )
52+ return queryset .filter (
53+ Q (birthday__gte = datetime .datetime .now () - relativedelta (years = int (stop )))
54+ & Q (birthday__lte = datetime .datetime .now () - relativedelta (years = int (start )))
55+ )
5556
5657 @classmethod
5758 def filter_by_fullname (cls , queryset , name , value ):
@@ -87,8 +88,7 @@ def filter_by_fullname(cls, queryset, name, value):
8788 )
8889 fullname = filters .CharFilter (method = "filter_by_fullname" )
8990
90- age__gte = filters .NumberFilter (field_name = "age" , lookup_expr = "gte" )
91- age__lte = filters .NumberFilter (field_name = "age" , lookup_expr = "lte" )
91+ age = filters .Filter (field_name = "age" , method = "filter_age" )
9292
9393 class Meta :
9494 model = User
0 commit comments