Отображение данных из двух разных моделей в одной html-таблице с помощью Django

У меня есть две модели StudentInfo & StudentAdmission. student_id является внешним ключом в модели StudentAdmission. Я хочу отобразить значения обеих моделей вместе в одной html-таблице. Как я могу это сделать.

файл models.py:

from django.db import models
from datetime import datetime

# Create your models here.
class StudentInfo(models.Model):
gender_choice = (
    ("male", "Male"),
    ("Female", "Female"),
)

firstname = models.CharField(max_length=100)
lastname = models.CharField(max_length=100)
gender = models.CharField(choices=gender_choice, max_length=10)
dob = models.DateField(default=datetime.now, blank=True)
address = models.CharField(max_length=100)
email = models.EmailField(max_length=100)
phone = models.CharField(max_length=100)
photo = models.ImageField(upload_to='photos/%Y/%m/%d/')

def __str__(self):
    return self.firstname

class StudentAdmission(models.Model):
    class_choice = (
        ("one", "one"),
        ("two", "two"),
        ("three", "three"),
    )

    section_choice = (
       ("A", "A"),
       ("B", "B"),
       ("C", "C"),
    )

    transport_choice1 = (
       ("abc", "abc"),
       ("bcd", "bcd"),
       ("def", "def"),
    )

    transport_choice2 = (
       ("ab", "ab"),
       ("bc", "bc"),
       ("de", "de"),
    )

    admission_no = models.CharField(max_length=100)
    admission_date = models.DateField(default=datetime.now, blank=True)
    roll_no = models.CharField(max_length=100)
    email = models.EmailField(max_length=100)
    username = models.CharField(max_length=100)
    password = models.CharField(max_length=100)
    class_name = models.CharField(choices=class_choice, max_length=10)
    section_name = models.CharField(choices=section_choice, max_length=10)
    transportation = models.CharField(choices=transport_choice1, max_length=10)
    transport_vehicle = models.CharField(choices=transport_choice2, max_length=10)
    student_name = models.ForeignKey(StudentInfo, on_delete=models.CASCADE)

    def __str__(self):
        return self.username

Я хочу отобразить связанные имя_класса и имя_раздела в следующей таблице

Вы можете получить доступ к связанному объекту через RELATED_MODEL_NAME_set. Здесь, например, это studentadmission_set

Или вы можете задать собственное связанное имя в вашем models.py:

class StudentAdmission(models.Model):
    ...
    student_name = models.ForeignKey(StudentInfo, on_delete=models.CASCADE, related_name="admissions")

После этого вы можете получить доступ к связанной модели с этим значением

...
{% for admission in student.admissions.all %}
... Do sth
{% endfor %}
...
Вернуться на верх