具有动态数据库表的Django模型

时间:2018-10-10 23:42:03

标签: django django-models django-database django-datatable

我正在使用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 :(得分: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) 
 ...