[pyar] OneToOneField Construcción de modelo en Django?

Emilio emilioramirez04 en gmail.com
Lun Dic 5 22:29:04 ART 2011


2011/12/5 Diego Uribe Gamez <diego.uribe.gamez en gmail.com>

> Buenos días
>
> Estoy haciendo un proyecto de base de datos y campos relacionados en
> Django, estoy mirando las clases de relaciones y no logro configurar la
> clase OneToOneField para una relación uno a uno de un conductor con un
> carro, la idea es relacionar al conductor con la placa del carro a
> conducir, no me sale error al intentar procesar la base de datos, pero no
> se si la relación queda bien hecha de esta manera, la idea es que cuando
> cree un conductor yo pueda buscar una placa para asignarle.
>
> La pregunta es, en este modelo como relaciono uno a uno un conductor con
> un carro? esta bien hecha la lógica(*)?
>
> class Carro(models.Model):
>     id_unidad = models.IntegerField(max_length=16)
>     marca = models.CharField(max_length=20)
>     modelo = models.CharField(max_length=20)
>     placa = models.CharField(max_length=6) *
>
> class Conductor(models.Model):
>     nombre_conductor = models.CharFieldField(max_length=30)
>     id_cedula = models.IntegerField max_length=20)
>     numero_celular = models.IntegerField (blank=True, null=True)
>     placa = models.OneToOneField(Carro) *
>
>
> Otra pregunta aparte que tengo es cuando se crea una app el modelo solo
> afecta a esa app en especial? si es verdad me gustaría saber como usar un
> modelo que englobe a todas las apps? lo hago con un import y colocando el
> modelo en la raíz?
>
> Gracias.
>
> --
>  *Diego Alonso Uribe Gamez*
> ------------------------------
>
> *Desarrollador web*
>
> Twitter: @DiegoUG <http://www.twitter.com/DiegoUG>
>
> Google+: http://gplus.to/diegoug
> ------------------------------
>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>

A ver si entendi, vos tenes carros, cada carro tiene una placa. Tenes
conductores donde cada conductor tiene UN carro (por ende una placa)
asignados no? Entonces creo que tu modelo esta bien (hice pequeñas
modificaciones):

 class Carro(models.Model):

id_unidad = models.IntegerField(max_length=16)

marca = models.CharField(max_length=20)

modelo = models.CharField(max_length=20)

placa = models.CharField(max_length=6)



#este metodo es para que en el admin no salga object Carro, sino

#"Carro: XXXX" donde XXXX es el contenido de la variable placa como

#querias.

def __unicode__(self):

return "Carro: {0}".format(self.placa)



class Conductor(models.Model):

nombre_conductor = models.CharFieldField(max_length=30)

id_cedula = models.IntegerField max_length=20)

numero_celular = models.IntegerField (blank=True, null=True)



#esta variable apunta a un Carro no a una placa, por eso el nombre

#deberia ser algo asociado al carro para mas claridad ;)

carro = models.OneToOneField(Carro)


Si lo que necesitas es que un conductor tenga muchos carros (por ende
muchas placas) asociadas, el carro debería tener un foreingkey a un
conductor. Con esto cada carro esta asignado a solo un conductor, pero el
conductor puede tener asociados muchos carros. Te dejo como seria el modelo:


class Carro(models.Model):
    id_unidad = models.IntegerField(max_length=16)
    marca = models.CharField(max_length=20)
    modelo = models.CharField(max_length=20)
    placa = models.CharField(max_length=6)
    #Cada carro se asocia con un solo conductor, pero el conductor puede
asociarse con
    #muchos carros.
    conductor = models.ForeingKey(Conductor)

    def __unicode__(self):
        print("Carro: {0}".format(self.placa)


class Conductor(models.Model):
     nombre_conductor = models.CharFieldField(max_length=30)
    id_cedula = models.IntegerField max_length=20)
    numero_celular = models.IntegerField (blank=True, null=True)

Es esto lo que necesitas?


-- 
Emilio H. Ramirez
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20111205/b3d39f36/attachment.html>


More information about the pyar mailing list