2017-03-19 62 views
0

如何在Django ModelForm中設置順序字段,當我不知道字段的數量和確切名稱時?Django模型表單 - 動態創建字段的順序

我有一個名爲FormEntry的模型,爲此我想創建一個ModelForm。
唯一的位移字段應該是plugin_data,並動態地創建它的自定義衍生物(標籤,初始,..)和語言前綴(基於語言設置)。
所以,如果我在設置語言CS和連接已經建立,那麼這些字段是必需的:

plugin_data, label_cs,label_en,initial_cs,initial_en,... 

新的字段在__init__動態創建的,我不知道我該如何使用新功能(Form.field_order)在Django 1.9當我不知道字段的名稱提前。

+0

它是什麼你想在這裏實現? [覆蓋表單的字段名稱?](http://stackoverflow.com/questions/8801910/override-django-form-fields-name-attr)因爲如果你正在談論基於動態生成*數據庫*字段上的字段設置,我有一個非常糟糕的感覺。特別是當涉及到像語言這樣的客戶端設置時。 –

+0

不,我想簡單地改變窗體字段的順序。現在他們是隨機的結果表格,我想按照字母順序排列它們 – WhoKnows

回答

0

沒關係,解決它自己:

class someForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(FormElementEntryTransForm, self).__init__(*args, **kwargs) 
     # creating new fields 
     #... 
     self.order_fields(sorted(self.fields.keys())) # sort fields alphabetically