В настоящее время я работаю над небольшим заявлением о представлении данных. Идея заключается в том, чтобы иметь возможность импортировать данные из определенного места (будь то плоский файл или удаленную базу данных) и сообщать об этих данных (например, Sales), следуя определенным «измерениям» (например, Продажи по региона, по продукт, покупатель). Сначала, когда я его построил, я создал модель «Sales» с такими размерами как FK для других моделей (модель Region, модель продукта, модель Customer). Аспектом отчетности приложения является просто куча запросов на эту таблицу, заканчивающихся в диаграммах, - это отлично работает.Django аннотация абз. От модели данных
Теперь предположим, что я хочу развернуть/масштабировать это приложение для нескольких пользователей; каждый пользователь будет иметь свой собственный набор данных, например. Пользователь A хочет сообщить о продажах (по регионам, продукту и клиенту), в то время как пользователь B хочет сообщить о объемах производства (по продукту, по заводам и по месяцам). Какой был бы лучший способ справиться с этим? Есть ли способ сделать абстрактную модель данных из базовых наборов данных?
Я имел быстрый взгляд на различные решения, такие как:
Джанго динамических моделей
Это может быть интересный подход, однако, глядя на код, он кажется, что это возможно только добавлять/удалять поля динамически --- мне нужно будет добавлять/удалять модели динамически.
NoSQL или любая неструктурированная бэкенд базы данных
Это может быть вариантом из того, что я видел, но у меня нет опыта с теми, так что трудно предположить.
Любого типа EAV модель данные
То же, что для (1) Я нахожусь под впечатлением, что это может работать для полеев, а не для целых таблиц.
Сериализация с использованием JSONField для хранения данных
Я изо всех сил, чтобы увидеть, как я мог бы принять это вперед, используя Django (в какой-то момент я чувствую, что я (ошибочно) пытается построить СУБД сначала).
Любая помощь приветствуется!
Приветствия, J-
Не можете ли вы поместить все потенциальные критерии отчетности в свою модель (регион, продукт, клиент, продукт, завод, месяц), а затем иметь разные представления для создания разных отчетов? –
Это может быть решение, но как я могу управлять тем фактом, что некоторые пользователи будут рассматривать продажи по регионам и продуктам, в то время как другие будут рассматривать продажи по продукту и клиенту? Это, на мой взгляд, было бы двумя разными моделями с разными полями 'models.ForeignKey()', не так ли? – jlibioul
Например, вы можете иметь представление 'sales_by_region' и другое представление' sales_by_product'. Затем добавьте профиль пользователя (http://stackoverflow.com/a/965883/1623026) с полем 'preferred_sales_view'. Тогда у вас может быть кнопка, которую пользователь нажимает «Открыть продажи» и динамически устанавливает целевой объект на основе значения «preferred_sales_view». Либо он направляется в 'sales_by_region', либо' sales_by_product'. –