from django import forms from openair.estimate.models import MyModel MAX_LEG_FORMS = 5 class MyModelForm(forms.ModelForm): def __init__(self, *args, **kwargs): super(MyModelForm, self).__init__(*args, **kwargs) for i in range(0, MAX_LEG_FORMS): self.fields['leg_location_%s' % i] = forms.CharField( label=u'Location', max_length=50, required=False ) self.fields['leg_airport_%s' % i] = forms.RegexField( label=u'Departure Airport', max_length=3, min_length=3, regex=r'^[a-zA-Z0-9]{3}$', required=False ) self.fields['leg_delay_%s' % i] = forms.IntegerField( label=u'Delay (in hours)', min_value=0, initial=0, required=False ) def clean(self): cleaned_data = self.cleaned_data for i in range(1, MAX_LEG_FORMS): location = cleaned_data.get("leg_location_%s" % i) airport = cleaned_data.get("leg_airport_%s" % i) delay = cleaned_data.get("leg_delay_%s" % i) if location != '' and airport in ['', False, None]: airport_msg = 'Validation message here' self._errors["leg_airport_%s" % i] = self.error_class([airport_msg]) if location != '' and delay in ['', False, None]: delay_msg = 'Validation message here' self._errors["leg_delay_%s" % i] = self.error_class([delay_msg]) return cleaned_data class Meta: model = MyModel