209 elif isinstance(query_type, (sqltypes.JSON, sqltypes.ARRAY, sqltypes.Enum)):
210 return cast(field, sqltypes.String).ilike('%{}%'.format(search))
211 elif isinstance(query_type, sqltypes.String):
212 return field.ilike('%{}%'.format(search))213
214 operators = list(filter(lambda x: x is not None, map(map_column, data.get('columns', []))))
215 queryset = queryset.filter(or_(*operators))
207 if isinstance(query_type, (sqltypes.Integer, sqltypes.Numeric)):
208 return cast(field, sqltypes.String).__eq__(search)
209 elif isinstance(query_type, (sqltypes.JSON, sqltypes.ARRAY, sqltypes.Enum)):
210 return cast(field, sqltypes.String).ilike('%{}%'.format(search))211 elif isinstance(query_type, sqltypes.String):
212 return field.ilike('%{}%'.format(search))
213
190 if value is None and item.lookup == lookups.DEFAULT_LOOKUP:
191 argument_name = item.name
192 if item.exclude:
193 argument_name = 'exclude__{}'.format(argument_name)194 value = get_filter_value(argument_name, item)
195 else:
196 value = None
184 if item.name:
185 argument_name = '{}__{}'.format(item.name, item.lookup)
186 if item.exclude:
187 argument_name = 'exclude__{}'.format(argument_name)188 value = get_filter_value(argument_name, item)
189
190 if value is None and item.lookup == lookups.DEFAULT_LOOKUP:
182
183 for item in filters_instances:
184 if item.name:
185 argument_name = '{}__{}'.format(item.name, item.lookup)186 if item.exclude:
187 argument_name = 'exclude__{}'.format(argument_name)
188 value = get_filter_value(argument_name, item)
f-strings are the fastest way to format strings as compared to the following methods:
%
format()
str.join
+
operator to concatinate stringTemplate.substitute
Some less preferred ways to format strings are the following:
from string import Template
menu = ('eggs', 'spam', 42.4)
old_order = "%s and %s: %.2f ¤" % menu # [consider-using-f-string]
beginner_order = menu[0] + " and " + menu[1] + ": " + str(menu[2]) + " ¤"
joined_order = " and ".join(menu[:2])
format_order = "{} and {}: {:0.2f} ¤".format(menu[0], menu[1], menu[2])
named_format_order = "{eggs} and {spam}: {price:0.2f} ¤".format(eggs=menu[0], spam=menu[1], price=menu[2])
template_order = Template('$eggs and $spam: $price ¤').substitute(eggs=menu[0], spam=menu[1], price=menu[2])
Consider using f-strings as shown below:
menu = ('eggs', 'spam', 42.4)
f_string_order = f"{menu[0]} and {menu[1]}: {menu[2]:0.2f} ¤"