2014-11-27 4 views
2

У меня есть мнение, где я получаю список назначений с лимитом ..Джанго цикл печати только один раз

def HospitalAppointmentView(request, pk, username, hdpk): 
todays_appointments = DoctorAppointment.objects.filter(hospital__id=pk, doctor__id=hdpk, appointment_date=today).order_by("-appointment_date")[:5] 

return render_to_response('doctor_appointment_list.html', {"todays_appointments": todays_appointments}, context_instance=RequestContext(request)) 

В моем шаблоне:

{% for appointment in todays_appointments %} 
    <h3>{{appointment.doctor.username}}<h3> 
    <tr> 
    <td>{{appointment.appointment_date}}</td> 
    <td>{{appointment.first_name}} &nbsp;{{appointment.middle_name}} &nbsp; {{appointment.last_name}}</td> 
    <td>{{appointment.user}}</td></tr> 
    <a href="{% url "all_appointments" appointment.hospital.id appointment.doctor.id%}"> 
    See All</a> 

{% endfor %} 

Его показывая 5 назначений правильно, за исключением «Просмотреть все» повторяется 5 раз, и я хочу сделать имя пользователя в качестве названия и его также напечатать 5 раз.

Когда я нажимаю «Просмотреть все», я хочу перенаправить на страницу, где все встречи можно увидеть. Как:

def HospitalAppointmentView(request, pk, username, hdpk): 
todays_appointments = DoctorAppointment.objects.filter(hospital__id=pk, doctor__id=hdpk, appointment_date=today).order_by("-appointment_date") 

return render_to_response('all_appointment.html', {"todays_appointments": todays_appointments}, context_instance=RequestContext(request)) 

Если я пишу «Посмотреть все» вне цикл я не могу получить доступ к hospital.id и doctor.id и внутри цикла я получаю «Показать все» 5 раз и то же самое с {{ appointment.doctor.username}}.

Как я могу перенаправить, не будучи напечатанным 5 раз со всей информацией, необходимой в URL-адресе, и {{назначение.doctor.username}} печатается один раз?

+0

Просто передать значение рк и hdpk в HospitalAppointmentView к шаблону. то у вас будут значения вне цикла. – Pascal

ответ

5

Вы можете использовать {{forloop.first}}, это будет верно для 1-й итерации. Как ...

{% for appointment in todays_appointments %} 

    {% if forloop.first %} 
     <h3>{{appointment.doctor.username}}<h3> 
    {%endif%} 

    ... 
{%endfor%} 
0
{{todays_appointments.0.doctor.username}} 

и ваш нормальный цикл.

{% for appointment in todays_appointments %} 
.... 
{% endfor %} 

но ответ Рохана мудрее

Смежные вопросы