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 = "| Vorgabe | " html += "Titel | " html += "Dokument | " html += "
|---|---|---|
| {vorgabe.Vorgabennummer()} | " html += f"{vorgabe.titel} | " html += f"{vorgabe.dokument.nummer} – {vorgabe.dokument.name} | " html += "
Gesamt: {count} Vorgabe{'n' if count != 1 else ''}
" return format_html(html) vorgaben_list.short_description = "Zugeordnete Vorgaben"