how to set a value for choicefield in django

4k Views Asked by At

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())
1

There are 1 best solutions below

3
On
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'})