我希望有可能合并从 动态模型生成的两个或多个表(由django-tables2生成) 。
先说一下我的问题:
对于动态生成的模型,我有以下字段:
...
fields = {
'colA': models.IntegerField(),
'colB': models.IntegerField(),
'colC': models.IntegerField(),
'colD': models.IntegerField(),
}
...
动态处理使我能够存储结构化的表,而无需定义冗余模型类。
从数据库中存储的表派生的模型示例:
myDynamicModelA = DataModels().create_model('myDynamicModelA_tablename')
myDynamicModelB = DataModels().create_model('myDynamicModelB_tablename')
myDynamicModelC = DataModels().create_model('myDynamicModelC_tablename')
myDynamicModelD = DataModels().create_model('myDynamicModelD_tablename')
....
'_tablename' 通常由所有表共享。不同的是前缀“myDynamicModel A,B,C...”
这是模型部分。
据此,让我使用django-tables2描述表结构:
每个模型/表共享一些列/字段,因此我可以像这样定义一个django-tables2类:
class Table_A(tables.Table):
colA = tables.Column()
colB = tables.Column()
可以使用继承简单地处理不同的字段:
class Table_B(Table_A):
colC = tables.Column()
colD = tables.Column()
def __init__(self, *args, **kwargs):
self.colname = kwargs['colname']
kwargs.pop('colname')
super(Table_B, self).__init__(*args, **kwargs)
for col in self.base_columns:
if col not in ['colA', 'colB']:
self.base_columns[col].verbose_name = '%s_%s' % (self.colname, col)
如您所见,构造函数为模型中不同的字段提供了不同的列名前缀。
现在可以从不同的模型生成表,例如:
'myDynamicModelA_tablename' 的表:
列:colA、colB、myDynamicModelA_tablename_colC、myDynamicModelA_tablename_colD
'myGenericModelB_tablename' 的表:
列:colA、colB、myDynamicModelB_tablename_colC、myDynamicModelB_tablename_colD
...
现在我的问题:是否可以合并两个表,以便我收到类似的内容:
colA,colB,myDynamicModelA_tablename_colC,myDynamicModelB_tablename_colC,myDynamicModelA_tablename_colD,myDynamicModelB_tablename_colD
将显示的值应该来自表之间的交集(这是可能的,因为 colA 中的公共值可以解释为主键)
结果是django-tables2对象是必要的,因为我想提供分页和排序选项。
我希望我的描述是可以理解的,如果没有,对不起。
非常感谢您的时间和帮助。