Как назначить идентификатор формы для Django ModelForm?
Я использую django-webtest для создания автоматизированных функциональных тестов для моего приложения.
Поскольку у меня есть несколько форм на одной веб-странице, в настоящее время я использую жестко закодированный индекс для выбора формы интереса. Например:
# 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, как назначить идентификатор формы (а не идентификатор поля формы) для 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">
Вы можете напрямую назначить id
к элементу формы в вашем шаблоне.
<form id="my_id" name="some_name" action="/my/url/" method="POST">