Evita errore con i facet (?_facets=True)

Il tag admin_list_filter valuta sempre list(spec.choices(cl)) anche se il
template del filtro renderizza il widget autocomplete e ignora le opzioni.
Con i facet attivi, choices() tentava il conteggio iterando su
BLANK_CHOICE_DASH (pk vuoto), causando
"Field 'id' expected a number but got ''".

Il filtro autocomplete non enumera le opzioni: choices() ora ritorna un
elenco vuoto, così i facet (non applicabili a questo filtro) non rompono
piu la changelist.
This commit is contained in:
2026-06-19 18:00:13 +02:00
parent 49fcd8fb7d
commit cf146c3b55
+8
View File
@@ -78,6 +78,14 @@ class AjaxAutocompleteListFilter(admin.RelatedFieldListFilter):
def has_output(self):
return True
def choices(self, changelist):
# Il template renderizza il widget autocomplete e non usa l'elenco di
# opzioni; inoltre questo filtro non le enumera (field_choices ritorna
# BLANK_CHOICE_DASH). Restituendo un elenco vuoto si evita che i facet
# (?_facets=True) tentino il conteggio sull'opzione vuota, che produrrebbe
# "Field 'id' expected a number but got ''".
return []
class AjaxAutocompleteListFilterModelAdmin(admin.ModelAdmin):
def __init__(self, *args, **kwargs):