Claves Foráneas con valor de clave primaria en modelo

1,132 views
Skip to first unread message

William Méndez

unread,
Feb 5, 2014, 8:33:19 PM2/5/14
to djan...@googlegroups.com
Buenas noches comunidad tengo esta inquietud de obtener el valor de la clave primaria en un modelo hecho en django, debido a que el modelo de datos me lo pasaron hecho y quieren que sea idéntico al esquema pero al intentar con el foreingkey(clase.pk) manda error alguien puede ayudarme con la solución a mi problema.
Adjunto una porción del código del modelo:

#Clase Cliente
class Cliente(models.Model):
    #Id= models.AutoField(db_column="CLI_Id", primary_key=True, unique=True, null=False)
    Ciudadela= models.ForeignKey(Ciudadela.pk.__str__(), db_column="CIU_Id")
    Cedula= models.CharField(db_column="CLI_Cedu", max_length=13, verbose_name="Cédula")
    Apellido= models.CharField(db_column="CLI_Apel", max_length=45)
    Nombre= models.CharField(db_column="CLI_Nomb", max_length=45)
    Direccion= models.CharField(db_column="CLI_Dire", max_length=45)
    Telefono= models.CharField(db_column="CLI_Fono", max_length=20, verbose_name="Teléfono")
    Email= models.EmailField(db_column="CLI_Mail", max_length=45)
    Usuario= models.OneToOneField(User, db_column="CLI_Usua")
    Fecha= models.DateTimeField(db_column="CLI_Fech", default=datetime.today(), verbose_name="Fecha de Creación")

    def __unicode__(self):
        return '%s %s'%(self.Nombre, self.Apellido)

    class Meta:
        ordering = ('Apellido',)
        db_table = 'SISCBR_MCliente'

#Local
class Local(models.Model):
    #Id= models.AutoField(db_column="LOC_Id", primary_key=True, unique=True, null=False)
    Cliente= models.ForeignKey(str(Cliente.pk), db_column="CLI_Id")
    Aseguradora= models.ForeignKey(Aseguradora.pk, db_column="ASE_Id")
    Ciudadela= models.ForeignKey(Ciudadela.pk, db_column="CIU_Id")
    Descripcion= models.CharField(db_column="LOC_Desc", max_length=45, verbose_name="Descripción")
    Ruc= models.CharField(db_column="LOC_Ruc", max_length=13)
    Direccion= models.CharField(db_column="LOC_Direc", max_length=45, verbose_name="Dirección")
    Catastro= models.CharField(db_column="LOC_Cata", max_length=20)
    Telefono= models.CharField(db_column="LOC_Fono", max_length=20, verbose_name="Teléfono")
    Avaluo= models.DecimalField(db_column="LOC_Avaluo", max_digits=18, decimal_places=2, default=0.0)
    Poliza= models.CharField(db_column="LOC_NPol", max_length=20, verbose_name="N° de Póliza")
    Estado = models.BooleanField(db_column="LOC_Est", default=True)
    Usuario= models.OneToOneField(User, db_column="LOC_Usua")
    Fecha= models.DateTimeField(db_column="LOC_Fech", default=datetime.today(), verbose_name="Fecha de Creación")

    def __unicode__(self):
        return self.Descripcion

    class Meta:
        ordering = ('Direccion',)
        db_table = 'SISCBR_DLocal'

PD. Espero pronta respuesta la cual estaría muy agradecido.


William Méndez

unread,
Feb 5, 2014, 8:41:36 PM2/5/14
to djan...@googlegroups.com
Por cierto intente con algunas formas para ver si calzaba pero ninguna me dio un resultado satisfactorio 
  • Ciudadela.pk.__str__()
  •  str(Cliente.pk)
  •  Ciudadela.pk
Estos fueron los tres métos que hice  
 

Ramiro Morales

unread,
Feb 5, 2014, 8:44:56 PM2/5/14
to djan...@googlegroups.com
2014-02-05 William Méndez <wmend...@gmail.com>:
> Buenas noches comunidad tengo esta inquietud de obtener el valor de la clave
> primaria en un modelo hecho en django, debido a que el modelo de datos me lo
> pasaron hecho y quieren que sea idéntico al esquema pero al intentar con el
> foreingkey(clase.pk) manda error alguien puede ayudarme con la solución a mi
> problema.
> Adjunto una porción del código del modelo:

No se entiende muy bien cual es tu pregunta. ¿Pódrias re-plantearla?

Por favor reduci tos modelos en el ejemplo que nos pasa a los csampos
que son relevantes a la misma. Los otros campos no aportan a describir
el problema y meten mucho ruido.
> --
> --
> Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del
> Framework Django de habla hispana" de Grupos de Google.
> Si quieres publicar en este grupo, envía un mensaje de correo
> electrónico a djan...@googlegroups.com
> Para anular la suscripción a este grupo, envíe un mensaje a
> django-es-...@googlegroups.com
> Para obtener más opciones, visita este grupo en
> http://groups.google.com.bo/group/django-es.
> ---
> Has recibido este mensaje porque estás suscrito al grupo "Django-es" de
> Grupos de Google.
> Para anular la suscripción a este grupo y dejar de recibir sus correos
> electrónicos, envía un correo electrónico a
> django-es+...@googlegroups.com.
> Para obtener más opciones, visita https://groups.google.com/groups/opt_out.



--
Ramiro Morales
@ramiromorales

Ricardo Azpeitia Pimentel

unread,
Feb 5, 2014, 8:50:38 PM2/5/14
to djan...@googlegroups.com
Recomendaciones:

1. Estudia el framework puede ser con videos, documentación, libros, etc...
2. Haz Ciudadela = models.ForeignKey(Ciudadela, db_column="CIU_Id"), la FK se crea automaticamente con obviamente la pk de la otra tabla.
3. Estructura mejor tus preguntas.

La verdad me contuve a responder de buenas a primera porque se ve que claramente no haz estudiado nada del framework. Y tu error esta mas que claro.

William Méndez

unread,
Feb 5, 2014, 8:50:57 PM2/5/14
to djan...@googlegroups.com
Lo siento Ramiro lo que quiero decir es que deseo tener como foránea el valor de  la clave primaria de una clase a otra.

William Méndez

unread,
Feb 5, 2014, 8:57:32 PM2/5/14
to djan...@googlegroups.com
Ricardo verá yo eso si hice sobre los foreings pero como le dije me pidieron que lleven el valor de la id de las otras clases entonces he buscado soluciones a ese problema y por eso planteo mi pregunta. 
por que eso de recibir un valor Ciudadela = models.ForeignKey(Ciudadela, db_column="CIU_Id") como usted lo plantea eso si lo he leido.

Charly Román

unread,
Feb 5, 2014, 10:10:45 PM2/5/14
to djan...@googlegroups.com

Muchacho, eso lo hace el ORM por debajo.

William Méndez

unread,
Feb 5, 2014, 10:59:20 PM2/5/14
to djan...@googlegroups.com
Gracias Charly enserio pido disculpas volví a generar el modelo como lo tenia antes sin agregar esos .pk y le hice una ingeniería inversa a la base para tener el modelo y vi que si hacia como me pedían, solo que llevado por la ignorancia ese señor me hizo dudar. Gracias por sus respuestas de antemano a todos que dedicaron una porción de su tiempo  :)
Reply all
Reply to author
Forward
0 new messages