El problema es que el modelo de usuario predeterminado no tiene algunas opciones muy útiles dadas a los campos, por ejemplo, unique = True al campo de correo electrónico.¿Cómo sobrescribir el campo de modelo de usuario predeterminado en Django?
Leí esta pregunta: Override default User model method, y revisé Proxy Model concepto, pero sin ningún efecto.
Al principio intentado:
from django.contrib.auth import models
class User(models.User):
class Meta:
proxy = True
email = EmailField('e-mail address', unique=True, blank=False)
que se tradujo en:
django.core.exceptions.FieldError: Proxy model 'User' contains model fields.
así que la próxima era:
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)
y esta "solución" no tiene ningún efecto en absoluto. El modelo de usuario predeterminado se comportaba igual que antes.
Estoy interesado en la solución de parche que no es de mono.
Editar: Ok. Monkey-patching es aceptable para mí, pero ¿cómo hacer esto razonablemente? (I no significa cambiar el archivo que se encuentra en /usr/pyshared/python2.6/...
)
Ah, vamos ... solo un * pequeño * bit of monkey business? :-) Lamentablemente, no creo que vayas a encontrar lo que realmente quieres. * Todo el mundo * quiere modificar el modelo de Usuario de una forma u otra, pero ha descubierto que las "clases" de la base de datos Django son * no * clases de Python, particularmente con respecto a la anulación de campos en el elemento primario. http://docs.djangoproject.com/en/dev/topics/db/models/#field-name-hiding-is-not-permitted –
El parche de mono sería lo suficientemente bueno si el lenguaje en sí lo admite internamente ;-) Por ejemplo las clases en Ruby están abiertas, por lo que puedes cambiar la implementación de las clases, incluso las incorporadas, en tiempo de ejecución, por lo que el modelo de usuario podría modificarse en Ruby en un máximo de 3 líneas. De todos modos, gracias por su respuesta. ¿Sabes cómo hacer que este parche de mono sea razonable? –