Есть несколько способов сделать это. Вы можете создать класс модели в замыкании, например,
model_cache = {}
def get_model_for_date(dt):
tbl_name = 'Test' + dt.strftime('%Y%m%d')
if tbl_name not in model_cache:
class MotorTable(Model):
date = DateTimeField()
addr = TextField()
status = CharField()
class Meta:
database = DB
table_name = tbl_name
if not MotorTable.table_exists():
MotorTable.create_table()
model_cache[tbl_name] = MotorTable
return model_cache[tbl_name]
В качестве альтернативы, вы можете просто явно указывать имя таблицы каждый раз, используя оболочку:
def get_model(dt):
table_name = 'Test' + dt.strftime('%Y%m%d')
MotorTable._meta.set_table_name(table_name)
if not MotorTable.table_exists():
MotorTable.create_table()
return MotorTable