0

我正在使用 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; 
4

1 回答 1

0

到目前为止,似乎最好的解决方案是制作一个自定义 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) 
 ...
于 2018-10-11T08:55:26.677 回答