I am trying to get validation errors to appear on my web page when using an 
inlineformset_factory. I have a main form called PersonalInformation form 
and 3 inline forms (Relative, PositionHeld and Phone). I am receiving the 
main form errors on my page, but I can't get the 3 inline forms to display 
the errors. 

Do I need to write custom errors? 

Can anyone help? I have searched on Google and tried several different 
things with no luck.

Thanks.  

*#form.py*

class PersonalInformationForm(forms.ModelForm):
    class Meta(object):
        model = Applicant
        fields = ('position', 'salutation', 'first_name', 'middle_name', 
'last_name', 'suffix',
                  'address1', 'address2', 'city', 'state', 'zip_code', 
'province', 'country', 'origin_country', 
                  'is_us_armed_forces', 'armed_forces_branch', 
'is_relative_of_pcusa',
                  'is_previous_employee', 'is_legal_work_in_us',)
    
    def __init__(self, *args, **kwargs):
        super(PersonalInformationForm, self).__init__(*args, **kwargs)
        self.fields['address1'].required = True
        self.fields['city'].required = True
        self.fields['zip_code'].required = True
        self.fields['country'].required = True
        self.fields['origin_country'].required = True
        self.fields['is_legal_work_in_us'].required = True
        
    def clean(self):
        if 'province' in self.cleaned_data and 
self.cleaned_data.get('province') == '':
            if not self.cleaned_data.get('state'):
                self._errors['state'] = ErrorList(['Must select state if 
province is not entered.'])
        if self.cleaned_data.get('is_us_armed_forces'):
            if self.cleaned_data.get('armed_forces_branch') == '':
                self._errors['armed_forces_branch'] = ErrorList(['You must 
enter branch if you checked that you served in the U.S. Armed Forces.'])
        return self.cleaned_data            


*#views.py*

@login_required
def personal_information(request, expected_applicant_id, position_id, 
private_code):
    expected_applicant = get_object_or_404(ExpectedApplicant, \
        pk=expected_applicant_id, position_id=position_id, 
private_code=private_code)
    
    applicant = None
    applicant_qs = Applicant.objects.filter(user=request.user, 
position=expected_applicant.position)
    if applicant_qs.count() > 0:
        applicant = applicant_qs[0]
    else:
        applicant = Applicant(user=request.user, 
position=expected_applicant.position, status = 
APPLICATION_STATUS_INCOMPLETE)    
           
    RelativeInlineFormSet = inlineformset_factory(Applicant, Relative, 
can_delete=False, extra=1)
    PositionHeldInlineFormSet = inlineformset_factory(Applicant, 
PositionsHeld, can_delete=False, extra=1)
    PhoneInlineFormSet = inlineformset_factory(Applicant, Phone, 
can_delete=False, extra=2)
    applicant.salutation = expected_applicant.salutation
    applicant.suffix = expected_applicant.suffix
    applicant.first_name = expected_applicant.first_name
    applicant.middle_name = expected_applicant.middle_name
    applicant.last_name = expected_applicant.last_name
    applicant.state = expected_applicant.state
    applicant.city = expected_applicant.city
    applicant.save()
    form = PersonalInformationForm(instance=applicant)
    formset1 = RelativeInlineFormSet(instance=applicant)
    formset2 = PositionHeldInlineFormSet(instance=applicant)
    formset3 = PhoneInlineFormSet(instance=applicant)
    position_title = expected_applicant.position.position_title
    complete_name = expected_applicant.get_complete_name()
    
    if request.POST:
        form = PersonalInformationForm(request.POST, request.FILES, 
instance=applicant)
        if form.is_valid():
            applicant = form.save(commit=False)
            applicant.save()
            phone_formset = PhoneInlineFormSet(request.POST, 
instance=applicant)
            relative_formset = RelativeInlineFormSet(request.POST, 
instance=applicant)
            position_formset = PositionHeldInlineFormSet(request.POST, 
instance=applicant)
            if phone_formset.is_valid() and relative_formset.is_valid() and 
position_formset.is_valid():
                phone_formset.save()
                relative_formset.save()
                position_formset.save()
        context = {
        'form': form,
        'formset1': formset1,
        'formset2': formset2,
        'formset3': formset3,
        'position_title': position_title,
        'complete_name': complete_name,
    }
    return render_to_response('applications/personal_information.html', 
context,
            context_instance=RequestContext(request))

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/0146c435-66ee-4c74-8bc3-fad890675bbb%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to