2010-02-10 90 views
2

我試圖根據存儲在數據庫中的字段及其定義動態地構建表單。在我的數據庫中,我已經定義了1個複選框,其中包含一些標籤和一個帶有某個標籤的文本框。在Django中構建動態表單

如何從db中的數據在我的視圖中動態創建表單?

感謝

回答

4

的Django確實從model definitions.

第一步一個偉大的自動生成工作形式可能會創建一個反映現有數據庫的Django模型。

關於複選框/文本字段的東西:

Django的具有字段部件之間有很大的分離。您可能有一個存儲數字的IntegerField,但您可以改變顯示給用戶的小部件,以便編輯該號碼。在某些情況下,您可能有一個輸入框,在其他情況下可能有一個textarea,或者一個下拉列表。 字段將處理類型轉換和驗證等細節,小部件確定表單字段的樣子。

某些字段類型具有與它們關聯的默認小部件,但您可以覆蓋它們。

另外,還要注意有表單字段示範田之間的差異


要動態地做到這一點,可以將項目添加到self.fields SortedDict上。 I.E:

from django.forms.forms import Form 
from django.forms.fields import CharField 
class FunkyForm(Form): 
    def __init__(self, *args, **kwargs): 
     super(FunkyForm, self).__init__(*args, **kwargs) 
     for item in range(5): 
      self.fields['test_field_%s' % item] = CharField(max_length=255) 

會給你一個表單類,它用5個動態生成的CharFields實例化。

+0

該項目是模型免費。沒有定義模型。假設數據正在從輸入文件(如XML)中讀取,而不是從數據庫中讀取。 – user140736 2010-02-10 03:41:17