title: Case insensitive unique model fields in Django?
body: <p>I have basically a username is unique (case insensitive), but the case matters when displaying as provided by the user. </p>
  
  <p>I have the following requirements:</p>
  
  <ul>
  <li>field is CharField compatible</li>
  <li>field is unique, but case insensitive</li>
  <li>field needs to be searchable ignoring case (avoid using iexact, easily forgotten)</li>
  <li>field is stored with case intact </li>
  <li>preferably enforced on database level</li>
  <li>preferably avoid storing an extra field</li>
  </ul>
  
  <p>Is this possible in Django? </p>
  
  <p>The only solution I came up with is "somehow" override the Model manager, use an extra field, or always use 'iexact' in searches.</p>
  
  <p>I'm on Django 1.3 and PostgreSQL 8.4.2.</p>