model filter zeigt unerwartetes Verhalten
Verfasst: Donnerstag 2. Februar 2023, 13:15
Die Lehrer können Lerngruppen anlegen und die Schüler sich dort anmelden. im entsprechenden admin Bereich habe ich einen Filter auf "lehrer" erstellt. In meinem Adminzugang, bekomme ich bei den Filtermöglichkeiten auch die angemeldeten Schüler angezeigt - das sollte doch nicht so sein oder?
hier wird der Link der Schüler auf die Lerngruppe gespeichert:
und das ist der Code in admin.py:
Code: Alles auswählen
class Lerngruppe(models.Model):
lehrer = models.ForeignKey(User, null=True, on_delete=models.CASCADE, related_name='gruppe')
name = models.CharField(max_length=15)
class Meta:
verbose_name_plural = 'Lerngruppen'
unique_together = ['lehrer', 'name']
def __str__(self):
return f"{self.name}, {self.lehrer}"
Code: Alles auswählen
class Profil(models.Model):
user = models.OneToOneField(User, related_name='profil', on_delete=models.CASCADE )
nachname = models.CharField(max_length=30)
vorname = models.CharField(max_length=30)
klasse = models.CharField(max_length=10)
# diese Felder werden erst ausgefüllt, wenn ein Schüler seine Lerngruppe wählt
schule = models.ForeignKey(Schule, null= True, blank=True, on_delete = models.SET_NULL)
gruppe = models.ForeignKey(Lerngruppe, null= True, blank=True, on_delete = models.SET_NULL, related_name='gruppe'
jg = models.PositiveSmallIntegerField(validators=[MinValueValidator(1), MaxValueValidator(10)])
kurs= models.CharField(max_length=1, choices=wahl_kurs.choices, default=wahl_kurs.E_KURS,)
# werden beim Erstellen eingestellt
stufe = models.PositiveSmallIntegerField(default=5) #, editable=False)
sj = models.SmallIntegerField(default=0)
hj = models.SmallIntegerField(default=0)
katmax = models.IntegerField(default=0) # die Zeilennummer die höchsten gewählten Aufgabenkategorie
#voreinst = models.IntegerField(default=1) # hier können Voreinstellungen gesetzt und abgefragt werden
voreinst = models.JSONField(blank=True, null=True, default=dict)
#richtig = models.JSONField() # hier werden die Anzahl der richtigen Aufgaben je Kategorie für die Lehrerübersicht gespeichert
#quote = models.JSONField() # und hier die entsprechenden Fehlerquoten
def __str__(self):
return f"{self.vorname} {self.nachname}, {self.klasse}"
class Meta:
verbose_name = 'Profil'
verbose_name_plural = 'Profile'
Code: Alles auswählen
from django.contrib import admin
from .models import Ort, Schule, Profil, Lerngruppe
class LerngruppeAdmin(admin.ModelAdmin):
list_filter=("lehrer", )
admin.site.register(Profil)
admin.site.register(Lerngruppe, LerngruppeAdmin)