Django - Varias tablas unidas por claves foráneas

Django

Es muy común que cuando trabajamos con una base de datos relacional acabemos teniendo muchas tablas que se relacionan unas con otras a través de claves foráneas (foreign key).

Por ejemplo: Puesto -> Producto -> Reserva

class Puesto(models.Model):
   nombre = models.CharField()
   propietario = models.TextField()

class Producto(models.Model):
   puesto = models.ForeignKey(Puesto)
   codigo = models.IntegerField()
   descripcion = models.TextField()

class Reserva(models.Model):
   producto = models.ForeignKey(Producto)
   cliente = models.CharField()
   fecha = models.DateField()

Pongamos que tenemos el nombre de un propietario, y este se llama Juan. La pregunta es ¿como puedo tener todas sus Reservas? Django nos lo hace muy sencillo.

misReservas = Reserva.objects.filter(producto__puesto__propietario='Juan')

Y ya esta. Si queremos ver todos los clientes.

misReservas = Reserva.objects.filter(producto__puesto__propietario='Juan')

for reserva in misReservas:
    print(reserva.cliente)

This work is under a Attribution-NonCommercial-NoDerivatives 4.0 International license.

Will you buy me a coffee?

You can use the terminal.

ssh customer@andros.dev -p 5555

Written by Andros Fenollosa

May 30, 2015

1 min of reading

You may also like