title: Extend Django user model with custom fields, receivers and backend
body: <p>I am designing a Django application (v1.6) and need to do several things with users:</p>
  
  <ol>
  <li>Add custom fields, such as a foreign key for user department</li>
  <li>Trigger database changes when certain fields change. For example, when the user's department changes I need to move inventory in another model out of the old department and into the new. I was planning to use a pre_save receiver to do this.</li>
  <li>Define custom permissions, such as a user can only modify rows in a table that are associated with their department.</li>
  <li>Eventually I want to integrate the application with our Active Directory server for authentication.</li>
  </ol>
  
  <p>I looked at the options in the <a href="https://docs.djangoproject.com/en/1.6/topics/auth/customizing/" rel="nofollow">documentation</a> and see that there are several options, from extending the user model with a one-to-one relationship to writing a custom user model.</p>
  
  <p>What design should I use to meet all of the above goals?</p>