@@ -146,6 +146,7 @@ class FilterNotEqual(BaseFilter):
146146 def apply (self , query , value ):
147147 query , field = get_field_setup_query (query , self .model , self .column_name )
148148 value = set_value_to_type (self .datamodel , self .column_name , value )
149+
149150 return query .filter (field != value )
150151
151152
@@ -156,6 +157,10 @@ class FilterGreater(BaseFilter):
156157 def apply (self , query , value ):
157158 query , field = get_field_setup_query (query , self .model , self .column_name )
158159 value = set_value_to_type (self .datamodel , self .column_name , value )
160+
161+ if value is None :
162+ return query
163+
159164 return query .filter (field > value )
160165
161166
@@ -166,6 +171,10 @@ class FilterSmaller(BaseFilter):
166171 def apply (self , query , value ):
167172 query , field = get_field_setup_query (query , self .model , self .column_name )
168173 value = set_value_to_type (self .datamodel , self .column_name , value )
174+
175+ if value is None :
176+ return query
177+
169178 return query .filter (field < value )
170179
171180
@@ -193,15 +202,33 @@ class FilterRelationManyToManyEqual(FilterRelation):
193202 name = lazy_gettext ("Relation as Many" )
194203 arg_name = "rel_m_m"
195204
205+ def apply_item (self , query , field , value_item ):
206+ """
207+ Get object by column_name and value_item, then apply filter if object exists
208+ Query with new filter applied
209+ """
210+ rel_obj = self .datamodel .get_related_obj (self .column_name , value_item )
211+
212+ if rel_obj :
213+ return query .filter (field .contains (rel_obj ))
214+ else :
215+ log .error (
216+ "Related object for column: %s, value: %s return Null" ,
217+ self .column_name ,
218+ value_item ,
219+ )
220+
221+ return query
222+
196223 def apply (self , query , value ):
197224 query , field = get_field_setup_query (query , self .model , self .column_name )
225+
198226 if isinstance (value , list ):
199227 for value_item in value :
200- rel_obj = self .datamodel .get_related_obj (self .column_name , value_item )
201- query = query .filter (field .contains (rel_obj ))
228+ query = self .apply_item (query , field , value_item )
202229 return query
203- rel_obj = self . datamodel . get_related_obj ( self . column_name , value )
204- return query . filter ( field . contains ( rel_obj ) )
230+
231+ return self . apply_item ( query , field , value )
205232
206233
207234class FilterEqualFunction (BaseFilter ):
0 commit comments