from django.contrib import admin from django.utils.html import format_html from nested_admin import NestedStackedInline, NestedModelAdmin, NestedTabularInline from .models import * # Register your models here. class ReferenzerklaerungInline(NestedStackedInline): model=Referenzerklaerung extra=0 sortable_field_name="order" show_change_link = True @admin.register(Referenz) class ReferenzAdmin(NestedModelAdmin): list_display = ('Path', 'vorgaben_count') inlines=[ReferenzerklaerungInline] search_fields=("name_nummer","Path") readonly_fields=("vorgaben_list",) fieldsets = ( (None, { 'fields': ('name_nummer','name_text','oberreferenz','url', 'vorgaben_list') }), ) def vorgaben_count(self, obj): """Count the number of Vorgaben that have this Stichwort""" count = obj.vorgabe_set.count() return f"{count} Vorgabe{'n' if count != 1 else ''}" vorgaben_count.short_description = "Anzahl Vorgaben" def vorgaben_list(self, obj): """Display list of Vorgaben that use this Stichwort""" vorgaben = obj.vorgabe_set.order_by('dokument__nummer', 'nummer') vorgaben_list = list(vorgaben) # Evaluate queryset once count = len(vorgaben_list) if count == 0: return format_html("Keine Vorgaben gefunden

Gesamt: 0 Vorgaben

") html = "
" html += "" html += "" html += "" html += "" html += "" html += "" html += "" for vorgabe in vorgaben_list: html += "" html += f"" html += f"" html += f"" html += "" html += "
VorgabeTitelDokument
{vorgabe.Vorgabennummer()}{vorgabe.titel}{vorgabe.dokument.nummer} – {vorgabe.dokument.name}
" html += f"

Gesamt: {count} Vorgabe{'n' if count != 1 else ''}

" return format_html(html) vorgaben_list.short_description = "Zugeordnete Vorgaben"