Implement query optimization

This commit is contained in:
2026-01-17 22:59:23 +01:00
parent cfc7531b59
commit 792b60cdc6
9 changed files with 568 additions and 34 deletions

View File

@@ -158,6 +158,19 @@ class RollingStockAdmin(SortableAdminBase, admin.ModelAdmin):
)
save_as = True
def get_queryset(self, request):
"""Optimize queryset with select_related and prefetch_related."""
qs = super().get_queryset(request)
return qs.select_related(
'rolling_class',
'rolling_class__company',
'rolling_class__type',
'manufacturer',
'scale',
'decoder',
'shop',
).prefetch_related('tags', 'image')
@admin.display(description="Country")
def country_flag(self, obj):
return format_html(

View File

@@ -11,7 +11,7 @@ from tinymce import models as tinymce
from ram.models import BaseModel, Image, PropertyInstance
from ram.utils import DeduplicatedStorage, slugify
from ram.managers import PublicManager
from ram.managers import PublicManager, RollingStockManager
from metadata.models import (
Scale,
Manufacturer,
@@ -248,7 +248,7 @@ class RollingStockJournal(models.Model):
class Meta:
ordering = ["date", "rolling_stock"]
objects = PublicManager()
objects = RollingStockManager()
# @receiver(models.signals.post_delete, sender=Cab)