2016-03-01 100 views
1

我有一個可變字典與我的所有表單,並且我想在模板上迭代顯示我的字典中沒有像{{example_form}}這樣硬編碼的所有窗體 這是我的代碼我無法迭代模板

{% extends 'prescription_menu.html' %} 
{% load bootstrap3 %} 
{% load crispy_forms_tags %} 

{% block title %}Physicians{% endblock title %} 

{% block container %} 
{% csrf_token %} 
<div class="row"> 
    <div class="col-md-offset-2 col-md-8"> 
     {% for form in forms %} 
      {{form}} 
     {% endfor %} 

    </div> 
</div> 
{% endblock container %} 

這是我的看法

def UpdatePhysician(request,id): 

forms = {} 
physician = get_object_or_404(Physician, id=id) 
employee = get_object_or_404(Employee, id=physician.employee.id) 
person = get_object_or_404(Person, id=employee.person.id) 
try: 
    address = get_object_or_404(Address, id=return_id(str(person.addresses.values('id')))) 
    address_form = AddressForm(request.POST or None, instance=address) 
    forms.update({'address_form': address_form}) 
except: 
    address = None 
email = get_object_or_404(Email, id=return_id(str(person.emails.values('id')))) 
phone = get_object_or_404(PhoneNumber, id=return_id(str(person.phone_numbers.values('id')))) 

person_form = PersonForm(request.POST or None, instance=person) 
employee_form = EmployeeForm(request.POST or None, instance=employee) 
physician_form = PhysicianForm(request.POST or None, instance=physician) 
email_form = EmailForm(request.POST or None, instance=email) 
phone_form = PhoneForm(request.POST or None, instance=phone) 

forms.update({'person_form': person_form, 
       'physician_form': physician_form, 
       'employee_form': employee_form, 
       'email_form': email_form, 
       'phone_form': phone_form, 
       }) 



return render(request, 'UpdatePhysician.html',forms) 

它不會把我的任何錯誤,它只是不顯示任何東西,當我如鍵入{{person_form}},我得到的形式我想要的。

回答

0

您的forms變量是一個dict。因此,您通過在模板中dicht必須循環:

{% for name, form in forms.items %} 
    {{form}} 
{%endfor%} 

並在視圖,你必須在最後一行改爲

return render(request, 'UpdatePhysician.html', {'forms': forms) 
0

您需要將您的形式添加到列表:

form_list = [person_form, physician_form, employee_form, email_form, phone_form] 

這將添加到您的語境詞典,在這種情況下,您的forms字典是context詞典:

forms.update({'forms': form_list}) 

然後在您的模板中:

{% for form in forms %} 
    {{form}} 
{% endfor %}