Настроить форму django c зависимыми друг от друга полями
Models:
В проекте будут модели Модель1, Модель2, Модель3, Модель4, Модель5, Модель6,
Модель2 ссылается через Foreignkey(required=false) на Модель1,
Модель3 ссылается через Foreignkey(required=false) на Модель2,
Модель4 ссылается через Foreignkey(required=false) на Модель2, Модель1, Модель3
Модель5 сама по себе. возможные значения - одна из букв алфавита.
Model6 контейнер всех предыдущих моделей.
View:
index:
Выдает форму и результат отправки предыдущей формы.
get_new_list:
Выдает новый список значений для работы формы
Forms
В форме модели6 все поля - select
в настройках формы есть указание зависимостей.
dependencies = {'model4':(model1, model2, model3), 'model2' : (model3), 'model5':(model3), } , если хотите - это может быть любым итерируемым обьектом, не только словарем
dependencies должно быть учтено в работе формы, в данном случае:
если я меняю значение поля model4 должны поменяться списки model1, model2, model3 и возможно их значения. Запоминать старые значения не надо.
если я меняю значение поля model2 должен поменяться список model3, возможно что значение изменится, если оно не в списке. Запоминать старое значение не надо.
и т.д.
При изменении - новы значения списков должны быть сформированы Процедура запроса-получения данных с сервера get_new_list, процедура должна быть защищена стандартными методами Django от несанкционированных обращений.
В настройке формы Должна быть возможность выбора как выполняются запросы на получение новых значений списков: синхронно или асинхронно.
Если вы не умеете работать с абстрактными моделями, во вложении картинка готового примера из жизни.
Требуемый результат: Работаюший проект Django (модели, форма, вью, скрипты, шаблоны и т.п.)
Или
Другой вариант решения работы с зависимыми полями формы с получением данных онлайн.
разумные комментарии приветствуются. Доработка не требуется. Прошу не предлагать решения с батарейками autocomplete, geodjango, mptt
Оплата после подтверждения работы скрипта на сервере исполнителя или моем.
Цель проекта - тестовое задание для поиска исполнителя на больший проект.
Я сам на выполнение этого задания потратил 4,5 часа. скрипт был взят с stackowerflow