2013-08-07 6 views
3

У меня есть адресная форма, которая имеет поле выбора стран. Я хочу установить значение перед загрузкой формы. Как я мог это сделать? Вот форма:Как установить значение для поля выбора в django

from django import forms 
from django.utils.translation import gettext as _ 

from django_countries import countries 
from core.api import NcpAPI 


class AddressForm(forms.Form): 
    # first_name  = forms.CharField(label=_("First Name"), widget=forms.TextInput(attrs={'class':'form-text required'})) 
    # last_name   = forms.CharField(label=_("Last Name"), widget=forms.TextInput(attrs={'class':'form-text required'})) 
    # company  = forms.CharField(label=_("Company"), widget=forms.TextInput(attrs={'class':'form-text required'})) 
    street   = forms.CharField(label=_("Street/PoBox"), widget=forms.TextInput(attrs={'class':'form-text required'})) 
    address1  = forms.CharField(label=_("Address1"), widget=forms.TextInput(attrs={'class':'form-text required'})) 
    address2  = forms.CharField(required=False, label=_("Address2"), widget=forms.TextInput(attrs={'class':'form-text'})) 
    address3  = forms.CharField(required=False, label=_("Address3"), widget=forms.TextInput(attrs={'class':'form-text'})) 
    city   = forms.CharField(label=_("City"), widget=forms.TextInput(attrs={'class':'form-text required'})) 
    postal_code  = forms.CharField(label=_("Postal code"), widget=forms.TextInput(attrs={'class':'form-text required'})) 
    country   = forms.ChoiceField(label=_("Country"), choices=countries.COUNTRIES, widget=forms.Select()) 

ответ

2
country = forms.ChoiceField(label=_("Country"), 
      choices=countries.COUNTRIES, widget=forms.Select(), initial= 'us') 

или вы можете инициировать его при вызове конструктор формы

form = AddressForm(initial={'country': 'us'}) 
+0

Больше mantainable: __forms.ChoiceField (LABEL = _ ("Страна"), выбор = страны .COUNTRIES, widget = forms.Select(), default = countries.COUNTRIES [0]) __ например, тогда, если в один прекрасный день ваш выбор изменится, Django не будет разбиваться :) – Ricola3D

+0

@ Ricola3D по умолчанию для моделей, для форм это initial – suhailvs

+0

@suhail, ваш код не будет работать на моем, поскольку я использую sessionwizard. Извините, я забыл упомянуть об этом. – Maverick