Джанго: Развернуть выбранные варианты? - PullRequest
1 голос
/ 30 января 2012

Мне нужна форма детализации, в которой пользователь сначала выбирает «тему» ​​из выпадающего списка, и соответствующие «фоновые изображения» отображаются с переключателями, которые скрыты. Например, если я выберу гору в качестве темы, в форме будут отображаться только Роки Маунтин и Фудзи.

Форма выглядит так:

<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: Отдельно поддерживается кем-то еще. Источник доступен. Минусы: для настройки приложения может потребоваться больше работы, чем для самостоятельной работы, и я даже не смогу понять, как его настроить. Также требуется база данных, в которой теперь я храню параметры в кортеже для использования с виджетом поля.

Так есть ли какие-либо предложения о том, как наилучшим образом реализовать это для повторного использования и разделения контента и представления?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...