Как назначить идентификатор формы для 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">
Другие вопросы по тегам