forms.py:
class DealForm(BaseForm, ModelForm):
class Meta:
model = Deal
values = django_forms.ChoiceField(widget = django_forms.Select, required=False, choices=[(1, "111"), (2, "222"), (3, "333")])
views.py:
class CreateDealView(DealBaseView, CreateView):
template_name = 'deal.html'
model = Deal
form_class = DealForm
def get_context_data(self, **kwargs):
ret = super(CreateDealView, self).get_context_data(**kwargs)
form = kwargs.get('form')
print form.data.get('values') # prints "None"
如何将表单中的字段数据传递给视图?
编辑: 我重新提出了这个问题。 我需要将预先设置的选项从表单传递到视图然后再传递给模板。怎么做?
答案 0 :(得分:0)
views.py:
deal.setdefault('values', form.fields['values'].choices or '')
模板:
<select id="val" name="value_list">
{% for id, val in deal.values %}
<option value="{{id}}"
{% if val == current_val %}selected="selected"{% endif %}>
{{val}}
</option>
{% endfor %}
答案 1 :(得分:0)
如果您指的是与表单中定义的选项不同的选项,请在实例化表单后在字段上设置选项:
class CreateDealView(DealBaseView, CreateView):
template_name = 'deal.html'
model = Deal
form_class = DealForm
def get_form(self, form_class):
form = super(CreateDealView, self).get_form(form_class)
choices = [('some', 1), ('other', 2), ('choices', 3)]
form.fields['values'].choices = choices
return form
但是,如果你的意思是你的领域的原始选择,你不需要做任何事情,它们已经在你的形式。