Как остановить Django от добавления дополнительных HTML-элементов к отображаемым виджетам - PullRequest
3 голосов
/ 17 мая 2010

У меня есть группа переключателей Django, которая визуализируется в HTML следующим образом:

<ul>
<li><label for="id_package_id_0"><input type="radio" id="id_package_id_0" value="1" name="package_id" /> Test 256</label></li>
<li><label for="id_package_id_1"><input type="radio" id="id_package_id_1" value="2" name="package_id" /> Test 384</label></li>
<li><label for="id_package_id_2"><input type="radio" id="id_package_id_2" value="3" name="package_id" /> Test 512</label></li>
<li><label for="id_package_id_3"><input type="radio" id="id_package_id_3" value="4" name="package_id" /> Test 768</label></li>
<li><label for="id_package_id_4"><input type="radio" id="id_package_id_4" value="5" name="package_id" /> Test 1024</label></li>
</ul>

Мне нужно, чтобы он отображался без списка. Мне известно о form.as_p, form.as_table и form.as_ul. Они не помогут мне, поскольку они продолжают добавлять дополнительные теги HTML. Кроме того, я не использую объект формы во всей его полноте, просто для проверки. Я уже создаю шаблон для формы, но хочу перейти к виджету радио.

Ответы [ 3 ]

0 голосов
/ 17 мая 2010

Чтобы отобразить только одно поле вашей формы, вам нужно вывести свое поле в шаблоне примерно так:

{{ form.my_radiofield }}

Это выведет только один виджет без дополнительной таблицы, разметки p или ul. Вы можете прочитать больше об этом здесь .

0 голосов
/ 18 мая 2010

Полагаю, вам придется создать подклассы необходимых виджетов и перезаписать их render() -метод!

0 голосов
/ 17 мая 2010

Ознакомьтесь с Django 1.2 (выпущен сегодня), в который входит встроенная проверка модели.

Тогда просто запишите свои формы от руки:)

...