title: Is there another way to change the error message on a ModelForm for a validate_unique error?
body: <p>Disregarding the actual method I use below for parsing the error messages since it needs lots of improvement to make it more general-purpose, is parsing the error messages raised like this the only way of changing the error message displayed?</p>
  
  <p>Specifically, I've removed one of the fields from a ModelForm.  When validate_unique is run I remove that field from validation as described in <a href="https://stackoverflow.com/a/3757871/23972">this answer</a> on SO.  The error message that Django displays on the form when validate_unique is run says: 'X with this Y and Z already exists.' where Z is the field I manually removed from the ModelForm.  I want to change this error message because mentioning Z, the not-displayed field, is confusing to the user who has no way of changing Z on this form.</p>
  
  <p>This feels fragile and hacky.</p>
  
  <pre><code>def validate_unique(self):
      exclude = self._get_validation_exclusions()
      exclude.remove('a_field_not_shown_on_form')
  
      try:
          self.instance.validate_unique(exclude=exclude)
      except ValidationError, e:
          if '__all__' in e.message_dict:
              for idx, err in enumerate(e.message_dict['__all__']):
                  for unique_together in self.instance._meta.unique_together:
                      if 'a_field_not_shown_on_form' not in unique_together:
                          continue
                      if err.lower() == '{} with this {} and {} already exists.'.format(self.instance.__class__.__name__,
                                                                                        unique_together[0],
                                                                                        unique_together[1]).lower():
                          e.message_dict['__all__'][idx] = '{} with this {} already exists in {}'.format(self.instance.__class__.__name__,
                                                                                                         unique_together[0].capitalize(),
                                                                                                         self.instance.complex.name)
  
          self._update_errors(e.message_dict)
  </code></pre>