Запросы Foreinkey
В настоящее время я пытаюсь сделать проект django, но застрял
class Klasse(models.Model):
klasse = models.CharField(max_length=60, null=True)
def __str__(self):
return self.klasse
class Lehrer(models.Model):
Name_und_Nachname = models.CharField(max_length=200, null=True)
Klassenlehrer_von = models.ForeignKey(Klasse, max_length=200, null=True, on_delete=models.SET_NULL)
date_created = models.DateTimeField(auto_now_add=True, null=True)
def __str__(self):
return self.Name_und_Nachname
class Schüler(models.Model):
name_und_Nachname = models.CharField(max_length=200, null=True)
Klasse = models.ForeignKey(Klasse, max_length=200, null=True, on_delete=models.SET_NULL)
Klassenlehrer = models.ForeignKey(Lehrer, max_length=200, null=True, on_delete=models.SET_NULL)
date_created = models.DateTimeField(auto_now_add=True, null=True)
def __str__(self):
return self.name_und_Nachname
class Punkte(models.Model):
punkte_ang = (("0", 0),("1", 1), ("2", 2), ("3", 3), ("4", 4), ("5", 5))
punkte_norm = (("0", 0),("1", 1))
Soziales_angagement = models.CharField( max_length=200, null=True, choices=punkte_ang,)
Lernverhalten = models.CharField(max_length=200, null=True, choices=punkte_norm, )
Sozialverhalten = models.CharField(max_length=200, null=True, choices=punkte_norm,)
konfliktlösung = models.CharField(max_length=200, null=True,choices=punkte_norm, )
eingentum_anderer = models.CharField( max_length=200, null=True, choices=punkte_norm,)
date_created = models.DateTimeField(auto_now_add=True, null=True)
Итак, я хочу сказать о коде, я знаю, что он не самый красивый и не самый лучший. Итак, вернемся к моему вопросу. Мне нужен способ связать учеников = Schüler и учителей = Lehrer. Я думал, что могу сделать это с помощью запроса классов и если ученик и учитель имеют один и тот же класс, они будут связаны. есть ли способ сделать это?
Вы можете получить все Schüler
с Klasse
некоторого Lehrer
с именем mylehrer
с помощью:
Schüler.objects.filter(Klasse__lehrer=mylehrer)
или наоборот, вы можете получить все Lehrer
из Schüler
с именем myschüler
с помощью:
Lehrer.objects.filter(Klassenlehrer_von__Schüler=myschüler)
Таким образом, нет необходимости хранить эти элементы с помощью дополнительного поля в модели Lehrer
/Schüler
, поскольку модель Klasse
действует как таблица [wiki] между Lehrer
и Schüler
моделями.