2016-08-23 2 views
0

Я создаю многоэтапную форму с помощью мастера форм, в котором пользователь вводит некоторые данные, например: Step1: Пользователь выбирает категорию из раскрывающегося списка (я полагаю, мне нужно будет сделать некоторые вид вызова ajax здесь?), тогда должен появиться раскрывающийся список подкатегорий, где он будет выбирать снова, а затем для шага 2 мне нужно динамически генерировать поля, согласно подкатегории.Создание вложенного динамического поля в Django form

#from models.py  
class Entity(models.Model): 
     name = models.CharField(max_length=255) 
     value_type = models.CharField(max_length=255, blank=True) 
     parent = models.ForeignKey('self', blank=True, null=True) 

Модель Прецедент пример:

name  value_type  parent 
Vehicles select   null 
Real estate select  null 
..... 
Cars  select   Vehicles 
Bikes  select   Vehicles 
..... 
Mercedes select   Cars 
Audi  select   Cars 
......... 
A4  null   Audi 
A5  null   Audi 

и т.д. Таким образом, каждый из подкатегорий имеет очень специфический набор полей, все которые очень разные, с разными предварительно заполненные значениями и должны генерируются один за другим в пределах «Шаг 2» формы. Предположим, что я выбираю Транспортные средства и Автомобили на шаге 1, шаг 2 должен дать мне, скажем, раскрывающийся список модели (Mercedes, Audi ...), тогда появится другое раскрывающееся меню, в зависимости от того, что я выбрал, предварительно заполненный моделями Mercedes и т. Д. Существует несколько уровней вложенных выпадающих списков, как я описал здесь. Застрял на этом в течение недели, ничего из SO/Google не помогло.

ответ

0

Я сделал нечто похожее, но гораздо менее сложное, используя jquery/javascript. Вы можете иметь нужные поля и исчезнуть с помощью пользовательских js-функций. Если для верхнего поля установлено значение Vehicle, js может создавать следующие поля и т. Д.

Вы можете найти имя и идентификатор поля, которые ищет мастер, путем проверки вывода по умолчанию в вашем браузере. Обычно name является your_step_name-your_field_name и id является id_your_step_name-your_field_name.

Возможно, вам также понадобится выполнить специальную обработку данных в методах мастера done и post. Я в значительной степени перезаписываю оба эти каждый раз, когда я делаю что-то сложное с волшебниками.

Надеюсь, что вы начнете. Вы можете делать то, что хотите, если хотите использовать jquery.

Смежные вопросы