From 9020074df8f6e5ca49527890d43e511fd67f5677 Mon Sep 17 00:00:00 2001 From: loulous27 Date: Sun, 7 Dec 2025 23:15:32 +0100 Subject: [PATCH] Add some admin useful informations and SQL optimisation --- photo21/settings.py | 2 +- photologue/admin.py | 17 ++++++++++++++++- photologue/models.py | 4 ++-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/photo21/settings.py b/photo21/settings.py index bfce090..d1d4957 100644 --- a/photo21/settings.py +++ b/photo21/settings.py @@ -28,7 +28,7 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) SECRET_KEY = "CHANGE ME" # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = False +DEBUG = True ALLOWED_HOSTS = [ "127.0.0.1", diff --git a/photologue/admin.py b/photologue/admin.py index 272b74c..467e029 100644 --- a/photologue/admin.py +++ b/photologue/admin.py @@ -25,6 +25,10 @@ class GalleryAdmin(admin.ModelAdmin): get_tags.short_description = _("tags") + def get_queryset(self, request): + # Cette étape est correcte et essentielle + return super().get_queryset(request).prefetch_related("tags") + class PhotoAdmin(admin.ModelAdmin): list_display = ( @@ -35,8 +39,9 @@ class PhotoAdmin(admin.ModelAdmin): "view_count", "admin_thumbnail", "get_owner", + "get_galleries" ) - list_filter = ["date_added", "is_public", "owner"] + list_filter = ["date_added", "is_public", "owner","galleries"] search_fields = ["title", "slug", "caption"] list_per_page = 25 prepopulated_fields = {"slug": ("title",)} @@ -45,6 +50,16 @@ class PhotoAdmin(admin.ModelAdmin): def get_owner(self, obj): return obj.owner.username + + def get_queryset(self, request): + # Précharge les objets 'galleries' en une seule requête supplémentaire + return super().get_queryset(request).prefetch_related("owner",'galleries') + + def get_galleries(self, obj): + return ", ".join([g.title for g in obj.galleries.all()])## get all linked galeries + + get_galleries.short_description = _("Gallery") + get_galleries.admin_order_field = 'galleries__title' get_owner.admin_order_field = "owner" get_owner.short_description = _("owner") diff --git a/photologue/models.py b/photologue/models.py index 855eff7..eec4857 100644 --- a/photologue/models.py +++ b/photologue/models.py @@ -15,7 +15,7 @@ from django.conf import settings from django.core.exceptions import ValidationError from django.core.files.base import ContentFile from django.core.validators import RegexValidator -from django.core.cache import caches +from django.core.cache import cache from django.db import models from django.template.defaultfilters import slugify from django.urls import reverse @@ -25,7 +25,7 @@ from django.utils.timezone import now from django.utils.translation import gettext_lazy as _ from PIL import Image, ImageFile, ImageFilter - +caches = cache logger = logging.getLogger("photologue.models")