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

Diego Uribe Gamez diego.uribe.gamez en gmail.com
Mar Dic 6 18:20:11 ART 2011


Una placa se compone generalmente en Colombia de tres letras y
tres números, en casos especiales son dos letras y 4 números, la idea es
que desde el admin se pueda crear un Conductor y colocarle un Carro,
buscando por su placa.

Estoy teniendo problemas con el unicode y me sigue saliendo object Carro:

class Carro(models.Model):
    placa = models.CharField(max_length=7)
    marca = models.CharField(max_length=10)
    modelo = models.CharField(max_length=10)
    tipo = models.CharField(max_length=10)
    color = models.CharField(max_length=10)

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

class Conductor(models.Model):
    vehiculos = models.OneToOneField(Vehiculo)

---------------------------------------------------------------------------------------
en HTTP:

aught TypeError while rendering: coercing to Unicode: need string or
buffer, NoneType found

---------------------------------------------------------------------------------------
en HTTP usando:

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

sale:

__str__ returned non-string (type NoneType)

Caught TypeError while rendering: __str__ returned non-string (type
NoneType)

Gracias.

El 6 de diciembre de 2011 10:23, Diego Uribe Gamez <
diego.uribe.gamez en gmail.com> escribió:

> si es lo que necesito, voy a probar y si tengo alguna duda te comento.
>
> Gracias.
>
> El 5 de diciembre de 2011 20:29, Emilio <emilioramirez04 en gmail.com>escribió:
>
> 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
>>
>>
>>
>> _______________________________________________
>> 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
>>
>
>
>
> --
>  *Diego Alonso Uribe Gamez*
> ------------------------------
>
> *Desarrollador web*
>
> Twitter: @DiegoUG <http://www.twitter.com/DiegoUG>
>
> Google+: http://gplus.to/diegoug
> ------------------------------
>
>
>


-- 
 *Diego Alonso Uribe Gamez*
------------------------------

*Desarrollador web*

Twitter: @DiegoUG <http://www.twitter.com/DiegoUG>

Google+: http://gplus.to/diegoug
------------------------------
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20111206/422585a9/attachment.html>


More information about the pyar mailing list