我想合併兩個或多個表(由django-tables2生成)從 dynamic models生成的可能性。從django-tables2和動態模型合併表
讓我先說明我的問題:
我有一個動態生成的模型以下字段:
...
fields = {
'colA': models.IntegerField(),
'colB': models.IntegerField(),
'colC': models.IntegerField(),
'colD': models.IntegerField(),
}
...
的動態操控給我的可能性來存儲我的表structered,但沒有界定冗餘模式類。
用於從數據庫中存儲的表中派生模型實施例:
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_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)
:
class Table_A(tables.Table):
colA = tables.Column()
colB = tables.Column()
它們是不同的字段可以簡單地通過使用繼承來處理
如您所見,構造函數爲模型中不同的字段提供了不同的列名前綴。
現在可以生成從不同的模型,如表:
表 'myDynamicModelA_tablename':
列:可樂,COLB,myDynamicModelA_tablename_colC,myDynamicModelA_tablename_colD
表'myGenericModelB_tablename':
列:colA,colB,myDynamicModelB_ta blename_colC,myDynamicModelB_tablename_colD
...
現在我的問題: 是可以讓我得到類似的東西兩個表合併:
可樂,COLB,myDynamicModelA_tablename_colC,myDynamicModelB_tablename_colC,myDynamicModelA_tablename_colD,myDynamicModelB_tablename_colD
將顯示值應(這是可能的,因爲來自colA的共同值,其可以被解釋爲主鍵)
它是nessecary,結果是一個django-tables2對象,因爲我想提供分頁和排序選項。
我希望我的描述是可以理解的,如果沒有,對不起。
非常感謝您的時間和幫助。