Problemas con varios Foreign Keys a una misma tabla

311 views
Skip to first unread message

Pedro Muñoz

unread,
Mar 27, 2007, 2:55:56 AM3/27/07
to djan...@googlegroups.com
Hola

Tengo una tabla la cual tiene varios foreign Keys a una misma tabla.
Ahora, el problema esta cuando quiero guardar valores en esta tabla,
me da diversos errores.

El model.py es este:

class Rendicion(models.Model):
....
rindente = models.ForeignKey(Funcionarios, related_name = "rindente")
gerente_area = models.ForeignKey(Funcionarios, related_name = "gerente")
autorizador = models.ForeignKey(Funcionarios, related_name = "autorizador")

En el View.py he probado de dos maneras distintas:

rendicion = Rendicion(codigo,rindente,gerente_area,autorizador,eval(monto_rendido),eval(monto_devuelto),f,
aprobacion, nro_doc)

y el error es:

ERROR: el valor es demasiado largo para el tipo character varying(1)
INSERT INTO "caja_rendicion"

Pruebo de la siguiente manera:

rendicion = Rendicion()

rendicion.codigo=codigo
rendicion.rindente=rindente
rendicion.gerente_area=gerente_area
rendicion.autorizador=autorizador
rendicion.monto_rendido=eval(monto_rendido)
rendicion.monto_devuelto=eval(monto_devuelto)
rendicion.fecha = f
rendicion.aprob_fiscal=aprobacion
rendicion.nro_doc=nro_doc
rendicion.save()

Y me sale el error

ERROR: el valor null para la columna «rindente_id» viola la
restricción not null INSERT INTO "caja_rendicion"

Alguna ayuda ?, ya estoy casi dos dias parado por culpa de esto
(tambien es verdad que solo trabajo de noche unas horas :p)

--
Pedro Muñoz a.k.a Droper
UTPINUX: http://www.utpinux.com
APESOL: http://www.apesol.org
Blog: http://droper.utpinux.org

Erny

unread,
Mar 27, 2007, 5:32:19 AM3/27/07
to djan...@googlegroups.com
Hola.

Intenta usar primero objetos relacionados ya existentes:

     f = Funcionario(nombre='Pepe')
     f.save()

     autorizador = gerente = rindente = f

Según el error estás intentando usar un objeto nuevo que no ha sido almacenado previamente.
Los 'Funcionarios' tienen que existir antes de poder asignarse a una instancia de Rendicion.

Erny





El día 27/03/07, Pedro Muñoz <pmu...@gmail.com> escribió:

Julian Romero

unread,
Mar 27, 2007, 2:37:14 PM3/27/07
to djan...@googlegroups.com
Ambos errores mencionan caja_rendicion que no aparece en el trozo de
modelo que has pegado. En el primero se queja de la longitud y en el
segundo de que no lo estás asignando. Revisa ese campo y la forma en
que lo rellenas.
__
julián


--
Julián

Pedro Muñoz

unread,
Mar 27, 2007, 3:55:00 PM3/27/07
to djan...@googlegroups.com
Hola

caja_rendicion es el nombre interno de la tabla.

Pedro Muñoz

unread,
Mar 27, 2007, 4:40:10 PM3/27/07
to djan...@googlegroups.com
Gracias por la ayuda, pero el error no tenia nada que ver con tener
varios foreign keys de una misma tabla.

En la base de datos, uno de los campos de la tabla estaba mal definido
y era mas pequeño que el codigo de su clave foranea, por eso lo de
"varing(1)", una atrocidad mia.

Reply all
Reply to author
Forward
0 new messages