Задать вопрос
@dodo101000101

Как разделить реализацию различных типов модели?

Есть потребность создать модель, которая при создании превращается в один из своих наследников. То есть при инициализации мы указываем каким именно типом этой модели этот экземпляр будет. Проблема в том, что в SQL декларированы наборы полей для каждой модели. Для каждого типа можно завести отдельную таблицу. Но важно, чтобы остальная система общалась с каждым конкретным типом через единый интерфейс. Как это реализовать, не превратив код в костыль?
  • Вопрос задан
  • 258 просмотров
Подписаться 1 Средний 2 комментария
Решения вопроса 1
ri_gilfanov
@ri_gilfanov
Web- and desktop-developer
Может быть django-polymorphic подойдёт:
https://django-polymorphic.readthedocs.io/en/stabl...

При многотабличном наследовании, Django ORM по-умолчанию позволяет получать все записи родительской и дочерних моделей только как объекты класса родительской модели.

Библиотека django-polymorphic позволяет, делая запрос объектов родительской модели, получать объекты разных классов (как родительской, так и дочерних моделей).

Плюс там реализованы классы, позволяющие адаптировать админку Django к удобной работе с полиморфными данными.

Например, иметь в админке единый подраздел для родительской и дочерних моделей с фильтром записей по типу, при создании проходить через промежуточную страницу с выбором типа, а так же скажем выбирать тип при создании записей в инлайн-полях. Причём, всё достаточно опционально.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
solotony
@solotony
покоряю пик Балмера
GenericForeignKey ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы