让DJANGO ORM 对应多个结构相同的表,有时候分表是必须的,
方法1:guoqiang qian <gonefish@gmail.com>提供
你可以创建几个manager,然后重载manager中的get_query_set方法,对应不同的表
def get_query_set(self):
self.model._meta.db_table = u'foobar' # 对应的表名
return super(Table1Manager, self).get_query_set()
通过修改元信息中的db_table
代码我已经简单试过,没有什么太大的问题,估计如果是GenericRelation的话,应该会有问题吧
方法2:DIrk <dirk.ye@gmail.com>提供
当数据量几千万、几亿条的时候,分表还是比较合理的方式。
我找到一个比较野蛮的方式:
from youapp.models import YouClass
YouClass._meta.db_table = 'isnot_default_table'
rows = YouClass.objects.all()
这只是思路,可以通过修改_meta.db_table的值指定不同table,具体怎么操作(如何修改、在哪里修改),还应该和应用结合。比如某些历
史数据可以根据时间分表处理。