sangue/django/dati_geo_app/autocomplete_extras.py

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