2016-07-13 77 views
1

形式獲取所選值

class AddressForm(forms.Form): 
    Country = forms.ModelChoiceField(queryset=Country.objects.filter(Enabled=True), empty_label="Select Country", widget=forms.Select(attrs={'class':'form-control'})) 

HTML

<form method="POST" action=""> 
    {% csrf_token %} 
    . 
    . 
    <div class="form-group col-md-4"> 
    {{ addressForm.Country }} 
    </div> 
</form> 

視圖

addressForm = AddressForm(request.POST, prefix="AddressForm") 
country = addressForm['Country'] 

但該國變量包含整個HTML元素,而不是所選擇的值。如forms.CharField

如何從窗體元素中檢索選定的值?

+0

你爲什麼要訪問它?這是後驗證? – Sayse

+0

我需要將數據從AddressForm傳遞給模型Address對象以調用.save方法(?) – John

回答

2

我需要從爲AddressForm到模型地址對象傳遞的數據調用.save方法(?)

,那麼你可能應該只使用一個model form

class AddressForm(forms.Form): 
    class Meta: 
      model = Address 

然後你可以撥打form.save()讓django爲你做出魔法。

無論哪種方式,您應該在嘗試訪問任何數據之前調用is_valid。這將公開表單的cleaned_data字典,其中包含所有表單驗證後的值。

+0

我知道這一點,但我面臨一些障礙:1)能夠將我自己的css類應用到輸入元素2)能夠爲類型.ForeignKey(Country ....)的模型字段創建下拉列表。 – John

+1

@John - 如果您還有其他問題,那麼您應該考慮將它們作爲您嘗試和研究的新問題提出。如果任何這些答案解決了這個問題,你應該考慮接受它 – Sayse

2

您獲得任何字段值的方式:致電is_valid(),然後form.cleaned_data[fieldname]

+0

我可以使用form.data [fieldname]而不是form.cleaned_data [fieldname]。 –

+0

不是。那是來自帖子的原始數據。 –

+0

我使用form.data [fieldname]從formchoicefield獲取記錄,因爲表單正在向我發送select(Dropdownlist)而不是value。這是錯誤的還是安全問題? –