From cf146c3b551c7ce443043537ae4ccc79d3ddf51e Mon Sep 17 00:00:00 2001 From: Guido Longoni Date: Fri, 19 Jun 2026 18:00:13 +0200 Subject: [PATCH] Evita errore con i facet (?_facets=True) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- djaa_list_filter/admin.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/djaa_list_filter/admin.py b/djaa_list_filter/admin.py index d07981b..188d49d 100644 --- a/djaa_list_filter/admin.py +++ b/djaa_list_filter/admin.py @@ -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):