Модель Django с динамическими таблицами БД - PullRequest
0 голосов
/ 11 октября 2018

Я использую 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 Ответ

0 голосов
/ 11 октября 2018

Кажется, что лучшим решением на данный момент является создание собственного 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) 
 ...
...