Мне нужна форма детализации, в которой пользователь сначала выбирает «тему» из выпадающего списка, и соответствующие «фоновые изображения» отображаются с переключателями, которые скрыты. Например, если я выберу гору в качестве темы, в форме будут отображаться только Роки Маунтин и Фудзи.
Форма выглядит так:
<form ...>
<select name="theme" onChange="showBackgroundDiv(this);">
<option value="0">Mountains</option>
<option value="1">Jungles</option>
</select>
<div id="0">
<input type="radio" name="background" value="rocky-mountain.png" alt="mountain rocky"><img src="rocky-mountain.png" /><br />
<input type="radio" name="background" value="fuji.png" alt="mountain fuji"><img src="fuji.png" />
</div>
<div id="1">
<input type="radio" name="background" value="amazon-rainforest.png" alt="forest amazon">Amazon Rainforest <br />
</div>
</form>
На самом деле есть две проблемы:
1) Как получить поле формы django для группировки связанных элементов в группы (как div) в поле радиовхода фонового изображения? Я пытался сделать это вручную, что было очень некрасиво.
2) Реализация скрытия / показа фоновых изображений.
Я использую django, и единственное решение, которое я могу придумать, это:
a) Используйте библиотеку JavaScript, такую как jQuery. Когда пользователь выбирает тему, ajax-запрос отправляется для получения значений переключателей. Pro: обычно используемый шаблон. Минусы: отправляется второй запрос, хотя список относительно короткий. Требуется больше работы с моей стороны.
b) Снова используя библиотеку JS, воссоздайте «тему» из поля радиовхода, используя значения, alt и name. Pro: Второй запрос не выполняется. Минусы: Кажется, с хаком много JS.
c) Использовать / изменять предварительно созданное приложение django, например django-smart-select . Pro: Отдельно поддерживается кем-то еще. Источник доступен. Минусы: для настройки приложения может потребоваться больше работы, чем для самостоятельной работы, и я даже не смогу понять, как его настроить. Также требуется база данных, в которой теперь я храню параметры в кортеже для использования с виджетом поля.
Так есть ли какие-либо предложения о том, как наилучшим образом реализовать это для повторного использования и разделения контента и представления?