bugfix ora l'inline legge dall'inline e il modeladmin dal modeladmin.

Inoltre ora non uso più _registry e ho dato un nome sensato alla classe
my-submodulepoetico
Guido Longoni 2023-07-07 00:02:53 +02:00
parent 0dbe8f2b6d
commit 9646cc8b6f
2 changed files with 8 additions and 8 deletions

View File

@ -13,7 +13,7 @@ from django.core.paginator import Paginator
from django.db.models import F
from . import models
from .drilldown_autocomplete import DrillDownAutocompleteModelAdmin
from .drilldown_autocomplete import DrillDownAutocomplete
# Modified version of a GIST I found in a SO thread
# cfr. http://masnun.rocks/2017/03/20/django-admin-expensive-count-all-queries/
@ -167,8 +167,8 @@ ddaf={
}
}
class RecapitoInline(StackedPolymorphicInline, DrillDownAutocompleteModelAdmin):
class IndirizzoInline(StackedPolymorphicInline.Child, DrillDownAutocompleteModelAdmin):
class RecapitoInline(StackedPolymorphicInline, DrillDownAutocomplete):
class IndirizzoInline(StackedPolymorphicInline.Child, DrillDownAutocomplete):
model = models.Indirizzo
autocomplete_fields = ('dug','comune','cap','nazione',)
drilldown_autocomplete_fields = ddaf
@ -284,7 +284,7 @@ class SoggettoContattabileAdmin(PolymorphicParentModelAdmin):
@admin.register(models.Indirizzo)
class IndirizzoAdmin(HiddenModel, DrillDownAutocompleteModelAdmin, RicercaOrdinataMixin, AjaxAutocompleteListFilterModelAdmin, PolymorphicChildModelAdmin, AutocompleteAdmin):
class IndirizzoAdmin(HiddenModel, DrillDownAutocomplete, RicercaOrdinataMixin, AjaxAutocompleteListFilterModelAdmin, PolymorphicChildModelAdmin, AutocompleteAdmin):
# resource = resources.IndirizzoResource
# list_per_page = 15
# paginator = CachingPaginator

View File

@ -13,6 +13,7 @@ from django.urls import path
class DrillDownAutocompleteJsonView(AutocompleteJsonView):
"""Handle AutocompleteWidget's AJAX requests for data."""
admin_context = None
def process_request(self, request):
"""
@ -42,8 +43,7 @@ class DrillDownAutocompleteJsonView(AutocompleteJsonView):
model_name = request.GET["model_name"]
source_model = apps.get_model(app_label, model_name)
try:
drilldown_field = self.admin_site._registry[
source_model].get_drilldown_autocomplete_fields(request)[source_field.name]
drilldown_field = self.admin_context.get_drilldown_autocomplete_fields(request)[source_field.name]
filtered_by = set(drilldown_field['filtered_by'])
except KeyError as e:
raise PermissionDenied from e
@ -105,7 +105,7 @@ class DrillDownAutocompleteSelect(AutocompleteSelect, DrillDownAutocompleteMixin
pass
class DrillDownAutocompleteModelAdmin(admin.options.BaseModelAdmin):
class DrillDownAutocomplete(admin.options.BaseModelAdmin):
drilldown_autocomplete_fields = dict()
class Media:
@ -166,7 +166,7 @@ class DrillDownAutocompleteModelAdmin(admin.options.BaseModelAdmin):
return super().formfield_for_foreignkey(db_field, request, **kwargs)
def drilldown_autocomplete_view(self, request):
return DrillDownAutocompleteJsonView.as_view(admin_site=self.admin_site)(request)
return DrillDownAutocompleteJsonView.as_view(admin_site=self.admin_site, admin_context=self)(request)
def get_urls(self):
def wrap(view, cacheable=False):