2014-07-22 83 views
0

我想在調查/測試(類似Google表單)中顯示一個表單以回答多種類型的問題。我的模型設置爲我有一個Test模型,Answer模型帶有Test的外鍵,Answer的子類(如多項選擇,簡答題)以及該問題類型所需的額外字段。使用模型子類(或多個模型)的Django內聯formset

我的第一個想法是使用內聯formset來顯示答案的字段。但是,如果我爲Answer創建了內嵌窗體集,則表單僅顯示此超類的字段,而不顯示特定的子類答案類型。它不會出現(基於我的搜索),可以創建一個多種模型類型的內聯表單。這個功能可能嗎?

(它發生,我認爲它可能是由創建每個Answer的個人表單列表基本上是手動滾動一個formset可能的,但是這似乎並不像一個很優雅的解決方案。)

+0

如果您正在使用CBV的檢查django-extra-views包含內聯表單集(創建和更新視圖)。 – petkostas

+0

這個問題不是缺乏內嵌式表單的CBV;這是內聯formset沒有完成工作。 – Pterosaur

+0

對不起,但我沒有看到任何類型的代碼(模型相關),以便更清楚,如果我是正確的,你有一個Abstract Answer模型類,並從那裏實現一個具體的?如果是的話,爲每個答案和內聯再次ModelForm可能是解決方案,爲了避免DRY我會檢查額外的視圖類和重寫他們注入不同的模型。 – petkostas

回答

0

如果我瞭解正確的:

def get_inline_by_model(m): 
    return type(
     'YourInline', 
     (admin.StackedInline,), 
     {'model' : m, 'extra' : 0,'form' : YourAdminForm,'max_num' : 1,'fields' :('key','value')} 
    ) 

,並在你的管理模式:

inlines = [ 
     get__inline_by_model(models.YourModel), 
    ] 

在這娃,你可以爲每個模型創建動態直列您可以對多個模型使用相同的內聯表格

+0

我正在創建的內容不在管理員中。這只是一個正常的觀點。 – Pterosaur