3

I have a address form which has a choicefield of countries. I want to set a value before the form loads. How could I do that? Here is the form:

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())
Maverick
  • 2,738
  • 24
  • 91
  • 157

1 Answers1

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

or you can initiate it when calling form constructor

form = AddressForm(initial={'country': 'us'})
suhailvs
  • 20,182
  • 14
  • 100
  • 98
  • More mantainable: __forms.ChoiceField(label=_("Country"), choices=countries.COUNTRIES, widget=forms.Select(), default = countries.COUNTRIES[0])__ for example, then if one day your choices changes Django won't crash :) – Ricola3D Aug 07 '13 at 07:39
  • @Ricola3D default is for models , for forms it is initial – suhailvs Aug 07 '13 at 07:44
  • @suhail, your code wont work on mine as I am using sessionwizard. Sorry I forgot to mention that. – Maverick Aug 07 '13 at 07:58