Bases: DjangoFilterBackend
Customized DjangoFilterBackend to reduce queries count.
Source code in saritasa_drf_tools/filters/django_filters.py
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 | class DjangoFilterBackend(rest_framework.DjangoFilterBackend):
"""Customized DjangoFilterBackend to reduce queries count."""
def to_html(
self,
request, # noqa: ANN001
queryset, # noqa: ANN001
view, # noqa: ANN001
) -> str | None:
"""Convert ModelChoiceField's widget to TextInput."""
filterset: rest_framework.FilterSet | None = self.get_filterset(
request=request,
queryset=queryset,
view=view,
)
if filterset is None:
return None
form: forms.Form = filterset.form
for field in form.fields.values():
if isinstance(field, forms.ModelChoiceField):
field.widget = forms.TextInput()
template = loader.get_template(template_name=self.template)
context = {
"filter": filterset,
}
return template.render(context, request)
|
Convert ModelChoiceField's widget to TextInput.
Source code in saritasa_drf_tools/filters/django_filters.py
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 | def to_html(
self,
request, # noqa: ANN001
queryset, # noqa: ANN001
view, # noqa: ANN001
) -> str | None:
"""Convert ModelChoiceField's widget to TextInput."""
filterset: rest_framework.FilterSet | None = self.get_filterset(
request=request,
queryset=queryset,
view=view,
)
if filterset is None:
return None
form: forms.Form = filterset.form
for field in form.fields.values():
if isinstance(field, forms.ModelChoiceField):
field.widget = forms.TextInput()
template = loader.get_template(template_name=self.template)
context = {
"filter": filterset,
}
return template.render(context, request)
|