From 99c5be94391423fd22848040efd8988cc4f046a4 Mon Sep 17 00:00:00 2001 From: Guido Longoni Date: Tue, 20 Jun 2023 22:41:01 +0200 Subject: [PATCH] aggiunti campi autocomplete nei contatti e bugfix polimorfismo --- django/contatti_app/admin.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/django/contatti_app/admin.py b/django/contatti_app/admin.py index 4e7ffef..5ec8568 100644 --- a/django/contatti_app/admin.py +++ b/django/contatti_app/admin.py @@ -5,6 +5,7 @@ from django.core.cache import cache from django.core.paginator import Paginator from django.db.models import Case, Count, Value, When from django.db.models.functions import Concat +from django.db.models import F from import_export.admin import ImportExportModelAdmin from polymorphic.admin import (PolymorphicChildModelAdmin, PolymorphicChildModelFilter, @@ -88,7 +89,8 @@ class VoceContattoRubricaAdmin(ImportExportModelAdmin, PolymorphicParentModelAdm # list_per_page = 15 # paginator = CachingPaginator # show_full_result_count = False - child_models = (models.Indirizzo, models.Email, models.Telefono, models.Fax,) + base_model = models.VoceContattoRubrica + child_models = (models.Indirizzo, models.Email, models.Pec, models.Telefono, models.Fax,) list_filter = (PolymorphicChildModelFilter,) readonly_fields = ('descrizione','tipo',) list_display = ('soggetto','descrizione','tipo',) @@ -98,9 +100,11 @@ class VoceContattoRubricaAdmin(ImportExportModelAdmin, PolymorphicParentModelAdm def tipo(self, obj): return getattr(obj,obj.polymorphic_ctype.model)._meta.verbose_name.title() - + tipo.admin_order_field = '_tipo' + def get_queryset(self, request): qs=super().get_queryset(request).prefetch_related('polymorphic_ctype') + qs=qs.annotate(_tipo=F('polymorphic_ctype__model')) return qs pass @@ -111,6 +115,8 @@ class TelefonoAdmin(HiddenModel, PolymorphicChildModelAdmin): # list_per_page = 15 # paginator = CachingPaginator # show_full_result_count = False + fields = ('soggetto','numero','interno','note',) + autocomplete_fields = ('soggetto',) pass @@ -120,16 +126,22 @@ class EmailAdmin(HiddenModel, PolymorphicChildModelAdmin): # list_per_page = 15 # paginator = CachingPaginator # show_full_result_count = False + fields = ('soggetto','indirizzo_email','note',) + autocomplete_fields = ('soggetto',) pass class VoceContattoRubricaInline(StackedPolymorphicInline): class IndirizzoInline(StackedPolymorphicInline.Child): model = models.Indirizzo + autocomplete_fields = ('comune','cap',) class EmailInline(StackedPolymorphicInline.Child): model = models.Email + class PecInline(StackedPolymorphicInline.Child): + model = models.Pec + class TelefonoInline(StackedPolymorphicInline.Child): model = models.Telefono @@ -140,6 +152,7 @@ class VoceContattoRubricaInline(StackedPolymorphicInline): child_inlines = ( IndirizzoInline, EmailInline, + PecInline, TelefonoInline, FaxInline, ) @@ -184,6 +197,8 @@ class FaxAdmin(HiddenModel, PolymorphicChildModelAdmin): # list_per_page = 15 # paginator = CachingPaginator # show_full_result_count = False + fields = ('soggetto','numero','note',) + autocomplete_fields = ('soggetto',) pass @@ -193,6 +208,8 @@ class PecAdmin(ImportExportModelAdmin): # list_per_page = 15 # paginator = CachingPaginator # show_full_result_count = False + fields = ('soggetto','indirizzo_email','note',) + autocomplete_fields = ('soggetto',) pass @@ -202,6 +219,7 @@ class SoggettoContattabileAdmin(PolymorphicParentModelAdmin): # list_per_page = 15 # paginator = CachingPaginator # show_full_result_count = False + base_model = models.SoggettoContattabile child_models = (models.PersonaFisica, models.PersonaGiuridica,) list_filter = (PolymorphicChildModelFilter,) readonly_fields = ('descrizione','tipo',)