Запросы 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 моделями.

Вернуться на верх