2009-03-24 4 views
0

다음 장고 모델을 참조하십시오 -만 관계를 통해 액세스 할 수있는 여러 장고 모델의 CharFields을 얻을 수있는 장고보기를 작성하는 방법

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)을 표시해야 (학생은 여러 EducationalQualifications을 가질 수 있습니다.)

그리드에는 "학생 이름", "시험의 짧은 이름", "짧은 이름", "EducationalQualification.institution", " EducationalQualification.from_date ","EducationalQualification.to_date "및"EducationalQualification.marks "

I의 (a Student.pk을 부여)이 데이터

누군가가 몇 가지 아이디어 좀 도와 주 시겠어요을 얻을 수있는 장고보기로 올 수 없었다?

감사합니다.

답변

3

당신은 단지 모든 관련 객체와 특정 학생에 대한 모든 EducationalQualification 객체를 가져 오기 위해 필요

{% 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 %} 
+0

완벽하게 작동합니다! 주제가 ForeignKey에 대해 null = True를 가지고 있기 때문에 이것이 작동하지 않을 것이라고 생각했습니다. 그러나 그것은 꼭해야만하는 것처럼 작동합니다. RTFM이라고 생각할 수도 있습니다. :) 감사합니다. – chefsmart

+0

학생 개체 인 경우 다른 방법으로도 참조 할 수 있습니다. student.educationqualification_set.all()이 동일한 결과를 가져옵니다. – dalore

+0

''print qs.query''의 출력을 보여주십시오. –

0

데이터베이스보기를 만들고 : 템플릿에 다음

def view_qualifications(request, student_id): 
    qs = EducationalQualification.objects.filter(student__pk=student_id).\ 
          select_related("student", "examination", "subject") 
    # ... 

그리고 그냥 throught를 반복 그것의 메타 클래스에 managed = False을 지정하는 모델입니다.

관련 문제