2017-06-15 45 views
0

我有一個抽象的模型,並從它繼承子類的負載形式創建類。Django的 - 基於類型

我可以得到這些子類的列表,但我將如何去把它們放在一個表格,以便用戶可以選擇創建其中之一嗎?

所以,舉例來說: -

class Abstract(models.Model): 
    class Meta: 
     abstract = True 

class ImplA(Abstract): 
    pass 

class ImplB(Abstract): 
    pass 

我需要一個形式,它使用戶能夠選擇創建或者ImplA的實例或ImplB的一個實例。

+0

也許爲每個模型創建單獨的表單? – xyres

+0

所以你要烏爾用戶選擇和創建數據庫列? – Amar

+0

@xyres可以工作 - 但我不希望有創建一個新的形式,我每次添加一個新的默認地將Impl的代碼的時間。 – bodger

回答

0

您可以實現此如下

首先創建一個模型來保存用戶輸入

SUBCLASSCHOICE = (
    ('ImplA', 'ImplA'), 
    ('ImplB', 'ImplB'), 
) 
class UserTable(models.Model): 
    abstract_class = models.CharField() 
    sub_class = models.CharField(choices=SUBCLASSCHOICE) 

現在,您可以從用戶表中取數據,並生成動態類像下面

models.py user_table = UserTable.objects.get()

local()[user_table.sub_class] = type(
    user_table.sub_class, #model class name 
    (user_table.abstract_class ,), 
) 
+0

這個答案中的表單在哪裏? – bodger