[Python-es] Agregar mas campos a User

1,098 views
Skip to first unread message

Allan N. Porras

unread,
Nov 3, 2011, 8:03:41 PM11/3/11
to pyth...@python.org
Hola lista.

Van a disculpar mi insistencia. Ya he preguntado esto en una ocasion pero no he recibido mayor informacion que los links de la documentacion oficial. La he leido, pero aun no le llego.

Yo quiero hacer un sistema de registro de personal y me gustaria poder usar la app que ya viene instalada en mi django... tambien me gustaria conservar la app "auth".

Quiero agregar mas campos para User, como por ejemplo telefono, direccion, departamento, etc.

Ya he hecho una subclase de User (UserProfile) y he agregado los campos que quiero, pero en cuando trato de agregar un usuario nuevo desde "admin" no veo los campos que he agregado.

Creo que me estoy complicando mas de lo necesario, pero es que llevo varios leyendo pero aun no soluciono mi problema.

Espero que me hayan entendido y que alguien me pueda ayudar.

Saludos!!

Sent from my HTC

Guido Castillo Gómez

unread,
Nov 3, 2011, 8:18:05 PM11/3/11
to La lista de python en castellano
En este post encuentras varios metodos para agregar mas campos al modelo User http://django.es/blog/metodos-para-crear-perfiles-de-usuario/

Saludos,


Guido Castillo Gómez

Manuel A. Estevez Fernandez

unread,
Oct 4, 2011, 6:14:16 PM10/4/11
to La lista de python en castellano
Si hace un tiempo tuve la misma necesidad, lo que haces es heredar de la clase User, te dejo un ejemplo

from django.contrib.auth.models import User

class Usuarios(User):
    usuario_id = models.AutoField(primary_key=True)
    User._meta.get_field('username')._unique=False
    User._meta.get_field('email')._unique=True
    nombre = models.TextField()
    apellido_paterno = models.TextField()
    apellido_materno = models.TextField(null=True)
    clave_empleado = models.IntegerField(unique=True)
    direccion = models.TextField(null=True)
    ciudad = models.TextField(null=True)
    estado = models.TextField(null=True)
    telefono = models.CharField(max_length=10,null=True)
    codigo_postal = models.CharField(max_length=6,null=True)
    numero_ss = models.CharField(max_length=20,null=True)
    cierra_caja = models.BooleanField(default=False)
    activo = models.BooleanField(default=True)
    perfil = models.ForeignKey(Perfiles,null=True)
   
    def __unicode__(self):
        return '%s %s'%(self._get_pk_val,self.nombre)



El 03/11/11 18:03, Allan N. Porras escribió:
_______________________________________________
Python-es mailing list
Pyth...@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Carlos Herrera Polo

unread,
Nov 3, 2011, 8:37:32 PM11/3/11
to La lista de python en castellano
Gracias Manuel, precisamente eso fue lo que intente hacer antes de los
rpms pero me da errores y no se compila. Voy a seguir "googleando", no
me queda de otra

El 04/10/11, Manuel A. Estevez Fernandez <stv...@gmail.com> escribió:

--
Enviado desde mi dispositivo móvil

monoBOT

unread,
Nov 3, 2011, 9:25:20 PM11/3/11
to La lista de python en castellano
Yo una vez encontre un tutorial para hacerte una class user personalizada ... no era complicado, cuando tenga tiempo lo miro a ver si te lo encuentro.

--
monoBOT
Visite mi sitio(Visit my site): monobotblog.alvarezalonso.es

Angel Claudio Alvarez

unread,
Nov 4, 2011, 4:29:20 PM11/4/11
to pyth...@python.org
Te equivocaste de lista
En la lista de django hoy preguntaron por eso mismo y yadieron la
respuesta. Y esta en la documentacion de django

> Saludos!!
>
> Sent from my HTC
>

Andrey Antoukh

unread,
Nov 4, 2011, 6:54:25 PM11/4/11
to La lista de python en castellano
Si creas una subclase de la clase user, tienes que tener en cuenta que
ademas de crear la subclase estas creando una segunda tabla en la base
de datos, y cuando haces consulta a tu modelo, realmente siempre
tienes un 1:1 con la tabla de user de django.

Mas alla de lo que ya he dicho, para que se vea en el admin, tienes
que registrarla en el admin. Lo que esta claro es que si no la
registras no se va a mostrar... se mostrara la de django.auth generica
que viene por defecto por que se registra "automaticamente".


Otra solucion, para evitar querys innecesarias, puedes crear tu clase
user copiando la funcionalidad de django.auth... y creando tu propio
auth manager. Y con un apañito y un monky patch XD tienes tu propia
clase de usuario. Pero este caso es bastante especifico, y dudo mucho
que lo llegues a necesitar.

Andrei.

El día 4 de noviembre de 2011 21:29, Angel Claudio Alvarez
<an...@angel-alvarez.com.ar> escribió:

--
http://twitter.com/niwibe
http://www.niwi.be
****
http://www.freebsd.org/
http://www.postgresql.org/
http://www.python.org/
http://www.djangoproject.com/

"Linux is for people who hate Windows, BSD is for people who love UNIX"
"Social Engineer -> Because there is no patch for human stupidity"

Edinson Padron Urdaneta

unread,
Nov 19, 2011, 9:54:17 AM11/19/11
to La lista de python en castellano
ya lo haz solucionado? porque sí no es así podría darte una mano....
sin embargo, opino igual que Ángel: esta no es la lista correcta para
formular preguntas respecto a Django...
Reply all
Reply to author
Forward
0 new messages