Queries¶
How do I override what operator is used for a query?¶
The member query_operator_to_q_operator
for Filter
is used to convert from e.g. :
to icontains
. You can specify another callable here:
Table(
auto__model=Track,
columns__album__filter__query_operator_to_q_operator=lambda op: 'exact',
)
The above will force the album name to always be looked up with case
sensitive match even if the user types album<Paranoid
in the
advanced query language. Use this feature with caution!
See also How do I control what Q is produced?
How do I control what Q is produced?¶
For more advanced customization you can use value_to_q
. It is a
callable that takes filter, op, value_string_or_f
and returns a
Q
object. The default handles __
, different operators, negation
and special handling of when the user searches for null
.
class AlbumTable(Table):
class Meta:
auto__model = Album
query__form__fields__eighties = Field.boolean(
display_name="the '80s",
)
@staticmethod
def query__filters__eighties__value_to_q(value_string_or_f, **_):
if value_string_or_f == "1":
return Q(year__gte=1980) & Q(year__lte=1989)
return Q()
▼ Hide result
► Show result