Depende de lo que intente agregar al modelo. Si desea agregar más información sobre el usuario, entonces se recomienda en general que utiliza el UserProfile
método: http://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users
Sin embargo, si lo que desea es añadir métodos personalizados o gerentes en el modelo User
, yo diría que es más lógico utilizar un modelo de proxy, así:
from django.contrib.auth.models import User
class UserMethods(User):
def custom_method(self):
pass
class Meta:
proxy=True
un modelo proxy operar en la misma tabla de base de datos como el modelo original, lo que es ideal para la creación de métodos personalizados sin extender físicamente el modelo. Simplemente reemplace cualquier referencia a User
en sus vistas al UserMethods
. (Y, por supuesto, puede utilizar esto en la herramienta de administración de anular el registro del modelo de User
y el registro de su modelo de poder en su lugar.)
cualquier instancia del modelo original User
que se crean será accesible al instante a través del modelo UserMethods
, y viceversa. Más aquí: http://docs.djangoproject.com/en/dev/topics/db/models/#proxy-models
(. NB Los modelos sustitutos requieren Django 1.1 y superior)
¡Buena llamada! Olvidé por completo los modelos Proxy. Estoy ejecutando 1.1, pero estaba pensando en una mentalidad 1.0. – Soviut
¿Existe alguna manera fácil de cambiar el tipo de request.user al tipo de proxy? ¿Es eso necesario, o puedo llamar a los métodos proxy directamente en request.user? – slacy
Tuve la misma duda que @slacy y encontré la manera de responderlo: https://stackoverflow.com/a/11526049/188614. Básicamente, debe subclase django.contrib.auth.backends.ModelBackend, devolver UserMethods en get_user y configurarlo en AUTHENTICATION_BACKENDS. –