如何写一个Django视图来获得,只能通过关系来访问多个Django模型的CharFields
-
21-08-2019 - |
题
请参阅下面的Django模型: -
class Student(models.Model):
reference_num = models.CharField(max_length=50, unique=True)
name = models.CharField(max_length=50)
birthdate = models.DateField(null=True, blank=True)
is_active = models.BooleanField(db_index=True)
class Examination(models.Model):
short_name = models.CharField(max_length=20, unique=True)
name = models.CharField(max_length=50, unique=True)
is_active = models.BooleanField(db_index=True)
class Subject(models.Model):
short_name = models.CharField(max_length=20, unique=True)
name = models.CharField(max_length=50, unique=True)
is_active = models.BooleanField(db_index=True)
class EducationalQualification(models.Model):
student = models.ForeignKey(Student)
examination = models.ForeignKey(Examination)
subject = models.ForeignKey(Subject, null=True, blank=True)
institution = models.CharField(max_length=50)
from_date = models.DateField(null=True, blank=True)
to_date = models.DateField()
marks = models.DecimalField(max_digits=5, decimal_places=2)
我需要在网格对于给定的学生显示最后模型“EducationalQualification)(一个Student可以有多个EducationalQualifications)。
网格有列“学生姓名”,“考试的简称”,“EducationalQualification.institution”“主题的简称”,“EducationalQualification.from_date”,“EducationalQualification.to_date”和“EducationalQualification。标记”。
我已经无法拿出Django视图来获得该数据(给定的一个Student.pk)
可能有人请帮助我的一些想法?
问候。
解决方案
您只需要他们所有的关系对象来获取对某些学生所有EducationalQualification
对象:
def view_qualifications(request, student_id):
qs = EducationalQualification.objects.filter(student__pk=student_id).\
select_related("student", "examination", "subject")
# ...
和然后在模板只是迭代throught它:
{% for q in qs %}
<tr>
<td>{{q.student.name}}</td>
<td>{{q.examination.short_name}}</td>
<td>{{q.subject.short_name}}</td>
<td>{{q.institution}}</td>
<td>{{q.from_date}}</td>
<td>{{q.to_date}}</td>
<td>{{q.marks}}</td>
</tr>
{% endfor %}
其他提示
创建数据库视图以及指定managed = False
在它的元类的模型。
不隶属于 StackOverflow