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

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


mira lo que me llego en consola después de ver el cambio:

[06/Dec/2011 15:13:37] "GET /admin/gprs/carro/ HTTP/1.1" 200 4161
[06/Dec/2011 15:13:37] "GET /admin/jsi18n/ HTTP/1.1" 200 2158
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
Carro: wer234
[06/Dec/2011 15:13:40] "GET /admin/gprs/carro/1/ HTTP/1.1" 500 243400


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

> 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
> ------------------------------
>
>
>


-- 
 *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/8acb8834/attachment.html>


More information about the pyar mailing list