Модель Джанго с динамическими таблицами БД
Я использую Django для взаимодействия с другим (JAVA) приложением, которое на основе некоторых событий генерирует во время выполнения таблицы в БД с той же моделью. Так что я не имею прямого контроля над БД. Например:
Sensor1
id | value | time
1 10 2018-10-11
Sensor2
id | value | time
1 12 2018-10-11
В настоящее время моя модель Django выглядит примерно так:
class Sensor(models.Model):
value = models.IntegerField()
time = models.DatetimeField()
class Meta:
managed = False
db_table = "Sensor1"
Есть ли у вас какие-либо подсказки, могу ли я как-то настроить модель, чтобы можно было получать данные из другой таблицы на основе запроса? В идеале, то, что позволило бы мне получить данные в виде:
config_tables=['Sensor1','Sensor2']
for table in config_tables:
data = Sensor.objects.table(table).objects.all()
...
Другая возможность может также иметь SQL-запрос, который выполняется в разных таблицах, так что, возможно, что-то вроде:
SELECT * FROM %s;
1 ответ
Кажется, что лучшее решение на данный момент - это создать собственный SQL-запрос, поэтому в этом примере это может быть что-то вроде этого в models.py:
def get_all_parameters(db_table):
return Parameters.objects.raw('SELECT * FROM %s' % db_table)
и назовите это как:
get_all_parameters('Sensor1')
или как:
TABLES = ['Sensor1', 'Sensor2']
for table in TABLES:
parameters = get_all_parameters(table)
...