Django Динамическое получение имени таблицы во время исполнения

Я использовал функцию django inspectdb для импорта существующей базы данных в качестве модели django. Выходные данные приведены ниже

Таблицы динамически создаются внешней программой, разделены по месяцам или неделям (в зависимости от модели данных, эти таблицы являются месячными).

Я хочу иметь единую модель django, но иметь возможность изменять таблицу, которую она использует для них во время выполнения, чтобы я мог установить, из какой таблицы она берет данные.

Могу ли я сделать что-то вроде установки обратного вызова вместо строки для получения имени таблицы?


def get_history_partition_name(timestamp):
    return 'formatted_table_name_from_timestamp'


class SqltData1202211(models.Model):
    tagid = models.IntegerField(primary_key=True)
    intvalue = models.BigIntegerField(blank=True, null=True)
    floatvalue = models.FloatField(blank=True, null=True)
    stringvalue = models.CharField(max_length=255, blank=True, null=True)
    datevalue = models.DateTimeField(blank=True, null=True)
    dataintegrity = models.IntegerField(blank=True, null=True)
    t_stamp = models.BigIntegerField()

    class Meta:
        managed = False
        #db_table = 'sqlt_data_1_2022_11'
        db_table = get_history_partition_name  # Example of a callback instead of a string
        unique_together = (('tagid', 't_stamp'),)


class SqltData1202302(models.Model):
    tagid = models.IntegerField(primary_key=True)
    intvalue = models.BigIntegerField(blank=True, null=True)
    floatvalue = models.FloatField(blank=True, null=True)
    stringvalue = models.CharField(max_length=255, blank=True, null=True)
    datevalue = models.DateTimeField(blank=True, null=True)
    dataintegrity = models.IntegerField(blank=True, null=True)
    t_stamp = models.BigIntegerField()

    class Meta:
        managed = False
        db_table = 'sqlt_data_1_2023_02'
        unique_together = (('tagid', 't_stamp'),)
Вернуться на верх