26 lines
1.5 KiB
Python
26 lines
1.5 KiB
Python
from djaa_list_filter.admin import AjaxAutocompleteListFilter
|
|
from django import forms
|
|
|
|
class MyAjaxAutocompleteListFilter(AjaxAutocompleteListFilter):
|
|
title = 'list filter'
|
|
template = 'djaa_list_filter/admin/filter/autocomplete_list_filter.html'
|
|
|
|
def __init__(self, field, request, params, model, model_admin, field_path):
|
|
model = field.remote_field.model
|
|
super().__init__(field, request, params, model, model_admin, field_path)
|
|
qs_target_value = f'{field_path}__{model._meta.pk.name}__exact'
|
|
queryset = model.objects.get_queryset()
|
|
widget = AjaxAutocompleteSelectWidget(
|
|
model_admin=model_admin, model=model, field=field, field_name=field.remote_field.model._meta.verbose_name, qs_target_value=qs_target_value
|
|
)
|
|
|
|
class AutocompleteForm(forms.Form):
|
|
autocomplete_field = forms.ModelChoiceField(queryset=queryset, widget=widget, required=False)
|
|
querystring_value = forms.CharField(widget=forms.HiddenInput())
|
|
|
|
autocomplete_field_initial_value = request.GET.get(qs_target_value, None)
|
|
initial_values = dict(querystring_value=request.GET.urlencode())
|
|
if autocomplete_field_initial_value:
|
|
initial_values.update(autocomplete_field=autocomplete_field_initial_value)
|
|
self.autocomplete_form = AutocompleteForm(initial=initial_values, prefix=field.remote_field.model._meta.verbose_name)
|
|
self.title = field.remote_field.model._meta.verbose_name |