Extendiendo el modelo User de django.auth

Django cuenta con un excelente sistema de autentificacion que viene contenido en djando.contrib.auth, el cual contiene un modelos para los usuarios que por defecto tiene algunos campos como nombre, apellidos, e-mail, etc… los cuales son suficientes para muchos casos, pero que sucede cuando necesitamos tener campos extra en la tabla donde permanecen los usuarios, existen varias soluciones al problema, lo mas rapido que se me ocurre es modificar directamente el modelo en django.contrib.auth, algo no recomendable si haremos un upgrade en el futuro, otro acercamiento seria heredar el modelo y crear nuestro modelo de usuarios personalizado y tendriamos que hacer algunos hacks para que el objeto request reciba una instancia de nuestro objeto y no del objeto User (complicado), otra solucion pero tambien un tanto engorrosa seria usar profiles, y por ultimo la solucion que aqui recomendamos y tal vez la mas facil de aplicar y debido a que el modelo User una clase como cualquier otra en python podemos extenderla como se muestra a continuacion agregando propiedades a la clase en cualquier aplicacion en el archivo models.py:

models.CharField(max_length=1,help_text=(“Tipo usuario”)).contribute_to_class(User,’tipo_usuario’)

al sincronizar nuestros modelos con la base de datos automaticamente tendremos el nuevo campo dentro la tabla usuarios =).

P.D. Si ya habias sincronizado con anterioridad tu base de datos tendras que eliminar la tabla auth_users para que se pueda agregar el campo de lo contrario no se agregara el campo a la tabla.