Sobre relacion uno a muchos

678 views
Skip to first unread message

Milton Labanda

unread,
Apr 8, 2011, 12:41:02 PM4/8/11
to djan...@googlegroups.com
Hola estimados amigos estoy estrenandome en la lista.
Queria preguntar si tengo dos modelos, y en uno de ellos un ForeignKey
como puedo referenciar en el otro modelo a todos los objetos relacionados (por ejemplo
para crear un metodo calcular_subtotal en una relacion 
Factura - Item.
colocando calcular_subtotal() en Factura

--
/\/\;/-----------------------------------------------------
Milton  Labanda  [miltonlab]
Distro:        Debian GNU/Linux 6.0 Squeeze
Blog:          http://1000tonlab.wordpress.com
jabber:        milt...@jabber.org
"... Solamente la libertad que se somete a la Verdad conduce a la persona humana a su  verdadero bien...".  Karol Wojtyla
(:\ Usa Software Legal, usa Software Libre /:)

Raimon Esteve

unread,
Apr 9, 2011, 3:10:34 AM4/9/11
to djan...@googlegroups.com, Milton Labanda
Muestra un poco de código para hacernos la idea clara. Te entiendo
pero no estoy seguro que te entienda.....

Raúl Cumplido

unread,
Apr 9, 2011, 4:12:01 AM4/9/11
to djan...@googlegroups.com
Hola,

No entiendo lo del ForeignKey, me estás diciendo que una factura sólo puede tener un item? Será una OneToMany, no?

Hombre si pones el modelo mejor. En el caso de una ForeignKey lo único que tienes que hacer es:

Factura.objects.get(variable_a_filtrar=valor_variable) --> Devuelve una única factura con sus items

en el caso de una relación múltiple en vez de get usa filter:

Factura.objects.filter(variable_a_filtrar=valor_variable) --> Devuelve una lista de facturas

Si envías el modelo intento ser un poco más claro :)

Saludos,



2011/4/9 Raimon Esteve <raimon...@gmail.com>
Muestra un poco de código para hacernos la idea clara. Te entiendo
pero no estoy seguro que te entienda.....

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



--
Raúl Cumplido

Milton Labanda

unread,
Apr 11, 2011, 9:41:47 AM4/11/11
to djan...@googlegroups.com, Raúl Cumplido
Gracias por la ayuda no tengo a mano el codigo pero ya lo pongo.
Por lo pronto lo que necesito es no encontrar las facturas sino  acceder a todos los items de la factura.

Milton Labanda

unread,
Apr 19, 2011, 1:16:58 PM4/19/11
to djan...@googlegroups.com
Este es el simplisimo modelo: Budget es como Factura o presupuesto y abajo está el Item, lo que deso es en Budget crear algo que me calcule el total de Items relacionados con el.

class Budget(models.Model):
date = models.DateField()

def __unicode__(self):
if self.date:
return self.date.strftime("%A %d de %B del %Y")
else:
return datetime.date.today().strftime("%A %d de %B del %Y")

class Item(models.Model):
name = models.CharField(max_length=30)
price = models.FloatField()
description = models.CharField(max_length=30)
budget = models.ForeignKey(Budget)



El 9 de abril de 2011 03:12, Raúl Cumplido <raulcu...@gmail.com> escribió:



--

David Medina

unread,
Apr 20, 2011, 3:16:33 AM4/20/11
to djan...@googlegroups.com
Hola,

Espero no equivocarme pero creo que con...

budget_object = Budget()

total = budget_object.item_set.count()

... lo tienes

Toda relacion 1:N (foreign key) crea una relación inversa en el modelo que se relacciona (budget) de manera que el objeto de dicho modelo obtiene un manager del estilo de 'objects' con el nombre del modelo que lo relaciona seguido de _set (creo que viene de QuerySet), de ahí el 'item_set'. Y como todo queryset puedes usar su método count().
A no ser que establezcas related_name

Un saludo.

2011/4/19 Milton Labanda <1000t...@gmail.com>



--
David Medina
Reference:    G  -  T  -  F - lucid 10.04

Milton Labanda

unread,
Apr 20, 2011, 9:09:55 AM4/20/11
to djan...@googlegroups.com
Muchas gracias David, voy a probarlo

YusufSalahAdDin

unread,
Jun 30, 2014, 1:37:58 AM6/30/14
to djan...@googlegroups.com
Muchachos, al fin acabo de entender, pero resulta que no quiero crear el objeto item primero, y luego en el budget vincular el objeto budget al item.
Puedo hacer la accion inversa? Crear el item y luego agregarle todos los budgets que quiera, crearlos ahi mismo si es necesario?
Reply all
Reply to author
Forward
0 new messages