从Django ModelChoiceField表单中获取选定的值

时间:2016-07-13 09:11:26

标签: django django-forms

形式

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']

但是country变量包含整个HTML元素而不是选定的值。 forms.CharField

等形式的任何字段都会出现同样的问题

如何从表单元素中检索所选值?

2 个答案:

答案 0 :(得分:3)

获得任何字段值的方式:通过调用is_valid()然后调用form.cleaned_data[fieldname]

答案 1 :(得分:2)

  

我需要将AddressForm中的数据传递给模型Address对象以调用.save方法(?)

然后你可能应该只使用model form

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

然后你可以打电话给form.save()让django为你做神奇的事。

无论哪种方式,您都应该在尝试访问任何数据之前调用is_valid。这会公开表单的cleaned_data字典,其中包含验证后的所有表单值。