Вложенный в Django? - PullRequest
       5

Вложенный в Django?

0 голосов
/ 22 января 2020

У меня есть модель Учителя:

class Teacher(models.Model):
    """
    The Teacher model.  
    """

    INITIALS = (
        ("MR", "Mr."),
        ("MRS", "Mrs."),
        ("MS", "Ms."),
    )
    initials = models.CharField(
        max_length=10,
        choices=INITIALS,
        default="MR"
    )
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)

    def __str__(self):
        return self.first_name+" "+self.last_name

    # Control model features
    class Meta:
        verbose_name = 'Teacher'
        verbose_name_plural = 'Teachers'

Затем модель класса, которая указывает на Учителя (Учитель является учителем класса этого класса):

class Class(models.Model):

    class_name = models.CharField(
        max_length=10,
        default=None
    )
    division_name = models.CharField(
        max_length=10,
        default=None
    )
    class_teacher = models.ForeignKey(
        Teacher, on_delete=models.SET_NULL, default=None, null=True, blank=True)

    def __str__(self):
        return self.class_name+" "+self.division_name

    # Control model features
    class Meta:
        verbose_name = 'Class'
        verbose_name_plural = 'Classes'

Тогда у меня есть Модель ученика:

class Student(User):
    religion = models.ForeignKey(
        Religion, on_delete=models.SET_NULL, null=True)
    caste = models.ForeignKey(Caste, on_delete=models.SET_NULL, null=True)
    date_of_birth = models.DateField(default=timezone.now)
    parent_name = models.CharField(max_length=255, default=None)
    address = models.CharField(max_length=255, default=None)
    phone_number1 = models.CharField(
        "Phone Number 1", max_length=10)
    phone_number2 = models.CharField(
        "Phone Number 2 (optional)", max_length=10, blank=True)

    def __str__(self):
        return self.first_name+" "+self.last_name

    # Control model features
    class Meta:
        verbose_name = 'Student'
        verbose_name_plural = 'Students'

И еще есть модель приема, которая указывает и ученику, и учителю:

class Admission(models.Model):
    admission_date = models.DateField()
    class_teacher = models.ForeignKey(
        Teacher, on_delete=models.SET_NULL, null=True)
    student = models.ForeignKey(
        Student, on_delete=models.SET_NULL, null=True)
    institute = models.ForeignKey(
        Institute, on_delete=models.SET_NULL, null=True)

    def __str__(self):
        return str(self.admission_date.year)+" "+self.student.first_name+" "+self.student.last_name

Теперь, основываясь на Учителя, указанного в зачислении, я хочу показать Класс, который преподает учитель в разделе «Студент» в разделе администратора. Это значит, что я должен знать, в каком классе учится студент. Как мне этого добиться?

...