fix sorting by Size or by Files to sort by number of archive results

This commit is contained in:
Nick Sweeting 2024-01-19 02:44:59 -08:00
parent aeaefe84b4
commit 861d44da98

View file

@ -6,6 +6,7 @@ from contextlib import redirect_stdout
from datetime import datetime, timezone from datetime import datetime, timezone
from django.contrib import admin from django.contrib import admin
from django.db.models import Count
from django.urls import path from django.urls import path
from django.utils.html import format_html from django.utils.html import format_html
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
@ -105,7 +106,7 @@ class SnapshotAdmin(SearchResultsAdminMixin, admin.ModelAdmin):
def get_queryset(self, request): def get_queryset(self, request):
self.request = request self.request = request
return super().get_queryset(request).prefetch_related('tags') return super().get_queryset(request).prefetch_related('tags').annotate(archiveresult_count=Count('archiveresult'))
def tag_list(self, obj): def tag_list(self, obj):
return ', '.join(obj.tags.values_list('name', flat=True)) return ', '.join(obj.tags.values_list('name', flat=True))
@ -187,7 +188,7 @@ class SnapshotAdmin(SearchResultsAdminMixin, admin.ModelAdmin):
def files(self, obj): def files(self, obj):
return snapshot_icons(obj) return snapshot_icons(obj)
files.admin_order_field = 'updated' files.admin_order_field = 'archiveresult_count'
files.short_description = 'Files Saved' files.short_description = 'Files Saved'
def size(self, obj): def size(self, obj):
@ -204,7 +205,7 @@ class SnapshotAdmin(SearchResultsAdminMixin, admin.ModelAdmin):
size_txt, size_txt,
) )
size.admin_order_field = 'archiveresult__count' size.admin_order_field = 'archiveresult_count'
def url_str(self, obj): def url_str(self, obj):
return format_html( return format_html(