2015-09-16 3 views
1

Я использую django-webtest для создания автоматических функциональных тестов для моего приложения.Как присвоить идентификатор формы Django ModelForm?

Поскольку у меня есть несколько форм на одной веб-странице, в настоящее время я использую индекс жесткого кода, чтобы выбрать интересующую форму. Например:

# Forms on this page are: forms[0] = Establishment form, 
    # forms[1]= School Form 
    school_form = school_page.forms[1] 
    school_form['phone'] = self.school_phone_number 
    school_form.submit(value='Submit') 

Я хотел бы использовать идентификатор формы вместо жестко прописанного индекса для выбора формы интереса, так что код ремонтопригоден. Но когда я печатаю school_form.id в своем коде, значение равно None.

Шаблон:

<form action="" method="post" > 
{% csrf_token %} 
<p> 
    {{ establishment_form|crispy }} 
    <br><br> 
    {{ school_form|crispy }} 
</p> 
<button type="submit" class="btn btn-lg btn-primary">Submit</button> 

я не мог найти в документации Django, как присвоить идентификатор формы (не форма поля ID) в ModelForm. Может ли кто-нибудь помочь мне в этом?

Я использую Django 1.7, django-webtest 1.7.8, WebTest 2.0.18 и django-crispy-forms 1.4.0.

ответ

2

Django не несет ответственности за вывод элемента формы. Таким образом, на уровне декларации формы нечего делать.

Вы всегда можете передать атрибут из представления и использовать его в шаблоне:

<form id="{{ form_id_from_view }}" action="." method="POST"> 
+0

Как использовать его в этом шаблоне с двумя формами? Добавлен шаблон в основное редактирование. – Tanuka

+0

Я действительно не понимаю. У вас есть только одна форма в этом шаблоне; он содержит поля из двух форм Django, но это не имеет отношения с точки зрения HTML. –

+0

Спасибо. Я получаю это сейчас. Я вводил в заблуждение блок детализации - есть две формы Django, но на странице HTML они объединены в один. Я опробовал ваше предложение, и теперь он работает :-) – Tanuka

0

Вы можете непосредственно присвоить id к элементу формы в шаблоне.

<form id="my_id" name="some_name" action="/my/url/" method="POST"> 
+1

Спасибо, Рахул, за ответ. Я только что принял ответ Дэниела, потому что он пришел первым. – Tanuka

+0

Нет проблем! –

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