title: What are the differences between using self.add_error() and raising a ValidationError()?
body: <p>You can throw a validation error in 2 ways. The first is with <code>self.add_error()</code> and the second with <code>raise ValidationError()</code>.</p>
  
  <p>I've read that when you use <code>self.add_error('field1','description here')</code> then <code>field1</code> is also automatically removed from the <code>cleaned_data</code> list and i assume a ValidationError object is also added to the <code>self.errors</code> list, is this correct? </p>
  
  <p>But what happens when you don't choose to use <code>self.add_error</code> and opt for using <code>raise ValidationError</code>  instead? Is this object also automatically added to the <code>errors</code> list behind the scenes? And how would you display this error message as caption under the correct invalid field?</p>
  
  <p>Thank you</p>