title: django Postgres IntegrityError
body: <p>Can somebody please explain to me how to properly test Postgres DB errors, particularly IntegrityError. For example i have next test: </p>
  
  <pre><code>class TestSlugs(TestCase):
      # This slug must be unique
      b = BookPublisher(slug=self.duplicate_slug)
      self.assertRaises(IntegrityError, b.save)
  
      #check if there's only one BookPublisher
      self.assertEquals(BookPublisher.objects.count(), 1)
  </code></pre>
  
  <p>Here it catches the IntegrityError but then all operations will fail, because that's how postgres works, ok. I see in docs that i can use transaction.rollback() but where: in test or in save() method? </p>
  
  <p>Also, i don't like the idea of writing rollbacks by hand, why can't django just try to save, and if it fails - give me IntegrityError and let me continue to work.</p>
  
  <p>I'm using django 1.1 </p>