如何写一个Django视图来获得,只能通过关系来访问多个Django模型的CharFields

StackOverflow https://stackoverflow.com/questions/676267

请参阅下面的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在它的元类的模型。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top