from django.contrib import admin # Register your models here. from .models import Person # Ersetze dies durch deine echten Klassennamen # DELTE: Die Option, Kinder zuzuordnen soll zunächst nicht umgesetzt werden. # class PersonInlineChildren(admin.TabularInline): # """ # Inline für das Feld ``children`` (Schüler eines Elternteils). # Nur bei Eltern (Rolle Mitarbeit/Chef) sichtbar. # """ # model = Person.children.through # Das durchschnittliche Join‑Model # verbose_name = 'Kind' # verbose_name_plural = 'Kinder' # extra = 0 # Keine leeren Zeilen anzeigen # # # ---------------------------------------------------------- # # **WICHTIG:** Hier wird der zu verwendende FK explizit genannt # # ---------------------------------------------------------- # fk_name = 'person' # <-- legt fest, welcher FK gemeint ist # # def has_add_permission(self, request, obj=None): # # Erlaube Hinzufügen nur für Eltern (Rolle Eltern) # return obj and obj.rolle in ('eltern') # # def formfield_for_foreignkey(self, db_field, request, **kwargs): # """ # Verhindere, dass ein Benutzer sich selbst als Kind hinzufügt. # """ # if db_field.name == "person": # # Hier handelt es sich um den FK auf die Person (das Ziel) # kwargs["queryset"] = Person.objects.exclude(pk=self.instance.pk) # return super().formfield_for_foreignkey(db_field, request, **kwargs) @admin.register(Person) class PersonAdmin(admin.ModelAdmin): list_display = ('user', 'rolle', 'klasse') search_fields = ['user__username', 'klasse'] ordering = ('rolle',) # # ---- Inline für Eltern (Rolle Mitarbeit/Chef) ---- # inlines = [PersonInlineChildren] # Zeigt das Kinder‑Inline nur bei passenden Rollen an def has_change_permission(self, request, obj=None): """ Optional: Verhindere, dass ein Schüler seine eigene Rolle oder die Zuordnung ändert. """ return super().has_change_permission(request, obj) from .models import Schulwoche # Ersetze dies durch deine echten Klassennamen admin.site.register(Schulwoche) from .models import SpeiseplanTag # Ersetze dies durch deine echten Klassennamen admin.site.register(SpeiseplanTag) from .models import Kategorie # Ersetze dies durch deine echten Klassennamen admin.site.register(Kategorie) from .models import Gericht # Ersetze dies durch deine echten Klassennamen # admin.site.register(Gericht) from .models import Menue # Ersetze dies durch deine echten Klassennamen admin.site.register(Menue) from .models import Bestellung # Ersetze dies durch deine echten Klassennamen admin.site.register(Bestellung) from .models import Bewertung admin.site.register(Bewertung) from .models import GerichtBild admin.site.register(GerichtBild) class GerichtBildInline(admin.TabularInline): model = GerichtBild extra = 0 # Keine leeren Zeilen anzeigen (kann später auf 1 erhöht werden) readonly_fields = ('image',) # Optional: Nur zur Anzeige, nicht editierbar @admin.register(Gericht) class GerichtAdmin(admin.ModelAdmin): list_display = ('name', 'kategorie') inlines = [GerichtBildInline] # Das Inline erscheint direkt unter jedem Gericht