I am designing a Django application (v1.6) and need to do several things with users:
- Add custom fields, such as a foreign key for user department
- 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.
- Define custom permissions, such as a user can only modify rows in a table that are associated with their department.
- Eventually I want to integrate the application with our Active Directory server for authentication.
I looked at the options in the documentation and see that there are several options, from extending the user model with a one-to-one relationship to writing a custom user model.
What design should I use to meet all of the above goals?