Отображение данных из двух разных моделей в одной 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 %}
...