2015-06-06 4 views
-2

Я создал и объект, который содержит несколько учеников. Я пытаюсь использовать каждого ученика, чтобы вытащить его данные из другой модели, поскольку я перебираю свой объект-ученик, известный как student_list. Я не опубликовал представление, которое я сделал, потому что я знаю, что объект работает нормально.Использование Django ORM в шаблоне

У меня есть следующие модели:

class StudentDetail(Base): 
    student = models.OneToOneField('Usr', limit_choices_to={'user_type': 'Student'}) 
    klass = models.ForeignKey('Klass', related_name='kara_pore') 

class Usr(AbstractUser, Base): 
    type_choices = (
     ('Student', 'Student'), 
     ('Teacher', 'Teacher'), 
    ) 
    user_type = models.CharField(max_length=10, 
           choices=type_choices, 
           default='Student') 
class Score(Base): 
    student = models.ForeignKey(Usr, limit_choices_to={'user_type': 'Student'}, related_name='scored') 
    subject = models.ForeignKey(Subject) 
    teacher = models.ForeignKey(Usr, limit_choices_to={'user_type': 'Teacher'}, related_name='marked') 
    exam = models.CharField(max_length=50) 
    exam_date = models.DateField() 
    score = models.IntegerField() 
    out_of = models.IntegerField() 

Файл шаблона:

{% for student in student_list %} 
<tr> 
    <td> <a href=#>{{ student }}</a> </td> 
    <td> {{ student.student.scored.score }} </td> <-- this line doesn't work. 
    <td></td> 
</tr> 
    {% endfor %} 

The student_list объект работы, и я могу легко итерацию через него. Я использую этот объект для фильтрации данных из класса Score. Я никогда раньше не использовал Zip. И я не знаю, является ли это идеальной ситуацией для ее использования. Насколько я знаю, использование точек для перехода через классы должно работать и получать мне необходимую мне ценность. Я должен делать что-то не так. Шаблон отображает, но оценка не отображается.

Примечание: Вот мой взгляд.

def View(request, pk): 
    this_klass = Klass.objects.get(id=pk) 
    student_list = this_klass.kara_pore.all() 
    return render(request, "grades/view.html", {'this_klass': this_klass, 'student_list': student_list}) 
+0

Вы * сделать * нужно показать свою точку зрения. Как вы уверены, что он работает нормально? Ваше представление отвечает за передачу этих данных в ваш шаблон. – rnevius

+0

Я выполнил итерацию через свой объект 'student_list', и он отлично работает. Я не могу отобразить вторую ячейку в моей таблице. Но все же я покажу свое мнение, если это поможет. @rnevius – MiniGunnR

+0

Я добавил представление. Возможно, это поможет @rnevius – MiniGunnR

ответ

0

Следующая решить эту проблему:

{% for student in student_list %} 
{% for score in student.student.scored.all %} 
<tr> 
    <td> <a href=#>{{ student }}</a> </td> 
    <td> {{ score.score }} </td> 
    <td></td> 
</tr> 
    {% endfor %} 
    {% endfor %} 
Смежные вопросы