How to customize Delivery Address form fields on checkout
In different countries, and in different stores there are different requirements what to ask end user to enter as address.
For example, ZIP code in U.S. called 'Post Code' in England. Or Region in Europe called State in U.S.
Some very common fields can be overwritten via settings, as like:
djw/custom/project_settings.py: ADDRESSFORM_CITY_LABEL="City" ADDRESSFORM_REGION_LABEL="Region" ADDRESSFORM_PHONE_LABEL="Tel."
If there are any need to customize form fields list (add/remove field), which fields are required to fill, you could use different technique. Djwarehouse tries to import first djw/custom/Address/views.py form DeliveryAddressForm:
try:
from djw.custom.Cart.views import DeliveryAddressForm
except ImportError:
from djw.core.Address.views import DefaultAddressForm as DeliveryAddressForm
So, to customize the complete form, create file djw/custom/Cart/views.py and put customized form there, named as DeliveryAddressForm
For example, to customize default form as:
- make Phone field required
- remove company name
the following code must be put in file djw/custom/Cart/views.py:
class DeliveryAddressForm(TemplatedForm): email = forms.EmailField() first_name = forms.CharField(max_length=50) last_name = forms.CharField(max_length=50) tel = forms.CharField(max_length=18,label='Phone', required=True) post_code = forms.CharField(max_length=10) # company_name = forms.CharField(max_length=100) street1 = forms.CharField(label='Street address',max_length=50) street2 = forms.CharField(label='Street address 2',max_length=50,required=False) city = forms.CharField(label=settings.ADDRESSFORM_CITY_LABEL,max_length=40) region = forms.ChoiceField(US_STATES,label=settings.ADDRESSFORM_REGION_LABEL) country_id = forms.ChoiceField([(country.id,country.name) for country in Country.objects.all()],label='Country') button = forms.CharField(required=False,widget=forms.HiddenInput) # used internally, don't remove
