2016-07-22 97 views
0

只是要清楚,我想諮詢一下在views.py如何在Django中訪問ModelForm的字段名稱?

接入領域我想額外的數據添加到形式,它被確認之前(因爲它是一個必需的字段),並another answer上stackexchange似乎暗示我必須創建一個新的表單來這樣做。

現在我的代碼看起來是這樣的:

if request.method == 'POST': 
    # create a form instance and populate it with data from the request: 
    form = TestForm(request.POST) 
    data = {} 
    for ---: 
     ---add to data--- 
    comp = Component.objects.get(name = path) 
    data['component'] = comp.id 
    form = TestForm(data) 
    if form.is_valid(): 
     test = form.save(commit = 'false') 
     test.save() 
     return submitTest(request, var) 

我怎麼能填補與劃線部分組成?

回答

0

這是錯誤的事情。沒有理由以編程方式添加必填字段;如果您已經知道該字段的價值,則沒有理由將其包含在表單中。

我不知道你是否需要創建另一個表單;相反,您應該在調用test.save()之前明確排除表單的Meta類中的該字段,並在test對象上設置該值。

評論後編輯我還是不明白爲什麼你有數據來自兩個不同的地方來,但也許你應該傳遞給表單之前將它們合併:

data = request.POST.copy() 
data['myvalue'] = 'myvalue' 
form = MyForm(data) 
+0

我通過url參數傳遞字段的數據。這個值是一個外鍵,所以將其設置爲必填字段非常重要。當我的意思是創建另一個表單時,我的意思是創建另一個formset對象,而不是用戶可見的表單。 –

0

我想通了,我什麼做錯了。在我的TestForm模型中,我沒有包含'component'字段,因爲我不希望它顯示在表單上。因此,即使我將表單插入到表單中,「表單」數據也正在被清除。因此,要解決這個我只是說「組件」到田間地頭進行顯示,並隱藏窗體上我forms.py加入這一行

widgets = {'component': HiddenInput()} 

到TESTFORM類。

相關問題