title: How to override default user model field in Django?
body: <p>The problem is the default User model does not have some very useful options given to the fields e.g <strong>unique=True</strong> to the email field.</p>
  
  <p>I read this question: <a href="https://stackoverflow.com/questions/1817244/django-override-default-user-model-method">Override default User model method</a>, and checked <a href="http://docs.djangoproject.com/en/dev/topics/db/models/#id8" rel="nofollow noreferrer">Proxy Model</a> concept, but with no effect.</p>
  
  <p>At first I tried:</p>
  
  <pre><code>from django.contrib.auth import models
  class User(models.User):
      class Meta:
          proxy = True
      email = EmailField('e-mail address', unique=True, blank=False)
  </code></pre>
  
  <p>which resulted in:</p>
  
  <pre><code>django.core.exceptions.FieldError: Proxy model 'User' contains model fields.
  </code></pre>
  
  <p>so next was:</p>
  
  <pre><code>from django.contrib.auth import models
  class User(models.User):
      class Meta:
          proxy = True
      models.User.email = EmailField('e-mail address', unique=True, blank=False)
  </code></pre>
  
  <p>and this "solution" has no effect at all. Default User model was behaving the same as before.</p>
  
  <p>I am interested in non-monkey-patching-solution only.</p>
  
  <p><strong>Edit:</strong> Ok. Monkey-patching is acceptable for me, but how make this reasonably? (I mean not changing the file that lies in <code>/usr/pyshared/python2.6/...</code>)</p>