Проект: Dynamic Field For Model
Описание: Проект представляет собой пример реализации динамически изменяемых полей в моделях, не прибегая к изменению структуры базы данных.
Принцип работы: Создается модель профессии. Она имеет связь many-to-many с таблицей dynamic_fields. Динамические поля создаются отдельно и могут быть переиспользованы в других профессиях. Дополнительные поля можно редактировать.
Создавая дополнительное поле нужно выбрать тип поля, НА данный момент представлены 3 типа:
- Число
- Текст
- Выбор значения
Каждое поле можно отметить обязательным. При выборе типа "Выбор значения" нужно указать через запятую как минимум 2 значения на выбор.
На основании профессии создается вакансия. Информация о дополнительных полях храниться в поле extra_fields в формате JSON. Данные валидируются согласно указанным типам.
Приложение упаковано в 3 контейнера: База данных, приложение и nginx.
Запуск проекта:
- Клонировать репозиторй
- Из каталога /infra запустить Docker Compose
Проект будет доступен по http://127.0.0.1:8777
- Загрузить фикстуры в БД:
sudo docker compose exec backend python manage.py loaddata data.json
Данные для входа в админ панель: User: admin Password: admin
http://127.0.0.1:8777/professions/ - просмотр созданных профессий со списком дополнительных полей
http://127.0.0.1:8777/vacancies/ - просмотр созданных вакансий на основании профессий