我是django / python的新手。我在我的老板给我的代码中有一个函数,它自2012年起每天创建一个新表,使用静态表作为模型。所以,我的问题是:如何使用静态表检索每日表的数据?类似的东西:
models.py
class report_2015_03_20(models.Model):
name = models.CharField(max_length=50)
class Meta:
managed = False
db_table = 'report_2015_03_20'
class report_2015_03_21(models.Model):
name = models.CharField(max_length=50)
class Meta:
managed = False
db_table = 'report_2015_03_20'
class report_2015_03_22(models.Model):
name = models.CharField(max_length=50)
class Meta:
managed = False
db_table = 'report_2015_03_20'
我需要参考传递元作为参数:
class report(models.Model):
name = models.CharField(max_length=50)
class Meta:
db_table = 'report_x_x_x'
任何帮助或意识形态对我都很好。感谢
答案 0 :(得分:0)
我不明白为什么这是必要的,不要认为这是一个好主意。但是, 是一个具有挑战性的问题,所以这里是如何执行此操作(使用type
动态创建类):
import datetime
from datetime import timedelta
from django.db import models
import __main__
# http://stackoverflow.com/questions/1060279/iterating-through-a-range-of-dates-in-python
def daterange(start_date, end_date):
for n in range(int ((end_date - start_date).days)):
yield start_date + timedelta(n)
class_list = []
for each_date in daterange(datetime.date(2012, 1, 1), datetime.date.today()):
date_string = each_date.strftime('%Y_%m_%d')
setattr(__main__,
'report_' + date_string,
type('report_' + date_string, (), {'name': models.CharField(max_length=50), 'Meta': type('Meta', (), {'managed': False, 'db_table': 'report_' + date_string})})
)