Динамические модели Django 2019 - PullRequest
0 голосов
/ 18 января 2019

Хорошо, я знаю, что повсюду существуют потоки от устаревших способов создания динамических моделей django , то есть они изменяются пользователем во время выполнения приложения. Я не нахожу надежного решения, кроме использования собственного SQL для создания динамических таблиц в моем проекте, поэтому я надеюсь, что есть способ динамически создать модель во время выполнения, чтобы ее можно было использовать в ORM Джанго.

Пока что в последние несколько недель проверки это кажется слишком сложным или невозможным для моей ситуации

Например, для краткости, у меня есть модель unit_declaration, которая содержит имена столбцов для каждого Property, которым «владеет» клиент. Затем я беру эти column names и в настоящее время создаю пользовательский запрос SQL для построения таблицы unit на основе этих столбцов для каждого property (т.е. _ [PROPERTYID] _units ). Я хочу иметь возможность , а не использовать пользовательский SQL для генерации создания клиентских property-unit таблиц во время выполнения, как это возможно (и мне нужен реальный пример, потому что в другом месте ничего не имеет смысла для меня)?

Я, конечно, могу предоставить код относительно того, что я делаю до сих пор, и я полностью понимаю, что в этом суть SO, но я попал в блок и мне нужно предложение, и я считаю, что случайная запись кода бесполезна, как показывает только то, что я описал. Сегодня я узнал, что внешние ключи Django очень удобны, и я не могу использовать их с специально объявленными таблицами SQL (вне ORM Django), как мне создать модель на основе времени выполнения?

Я посмотрел на пакет PyPi django-dynamic-models, но он кажется устаревшим, поскольку последний выпуск был 2014 г. Есть ли лучший вариант или вы предложите мне использовать пользовательские запросы SQL, чтобы создавать динамические таблицы для моего проекта?

1 Ответ

0 голосов
/ 18 января 2019

Если вы используете Postgresql, лучшим решением может быть добавление JSONField .Он может быть запрошен в ORM и может добавить массу гибкости, не требуя новых таблиц или огромного количества пользовательского кода для динамических моделей.

Вот примеры пара его использования.

...