2010-11-24 53 views
3

在我的模型,我有一個類條件和兩個子類,StringConditionNumCondition。用戶將查看/編輯/訂購條件作爲單個列表。異形式FORMSET

有什麼辦法可以用Django modelform formset實現這個嗎?我目前使用了兩個獨立的表單集(一個用於NumConditions,一個用於StringConditions),但手動交織排序很麻煩(因此數字條件可能出現在兩個字符串條件之間等)。

回答

2

從Django 1.3開始,您可以重寫表單集的__iter__()方法來控制表單呈現的順序。要利用此功能,您需要做兩件事:首先標記您的表單,以便您可以訂購它們,然後將表單集呈現爲for form in formset(而不是舊的for form in formset.forms)。然後創建一個__iter__()方法來訂購您正在生產的表單&。

肯特

+0

不要忘了[索引覆蓋](https://docs.djangoproject.com/en/dev/topics/forms/formsets/#formsets),如果你做到這一點。 (從鏈接的文檔 - > Formsets也可以被索引到,它將返回相應的表單,如果你重寫__iter__,你還需要重寫__getitem__以具有匹配的行爲。) – KobeJohn 2011-11-03 06:27:21