Skip to content

Latest commit

 

History

History

Ejemplo-03

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

Fullstack con Python > Backend con Python > Sesión 09 > Ejemplo-03

Definiendo las consultas usando el ORM de Django

OBJETIVO

  • Conocer y comprender el sistema de consultas o Object Relacional Mapping (ORM) de Django.
  • Conocer las consultas entre tablas y sus relaciones
  • Definir una consulta para generar un reporte.

REQUISITOS

  1. Actualizar repositorio

  2. Usar la carpeta de trabajo Clase-09/Ejemplo-03

  3. Diagrama del modelo entidad-relación para el proyect Biblioteca

    Modelo entidad-relación para Biblioteca

  4. Documentación de Django referente a modelos:

DESARROLLO

  1. Usando el Shell de Django mostrar todos los registros de la tabla Libro:

    Iniciando el Shell de Django:

    (Biblioteca) Ejemplo-03/Biblioteca $ python manage.py shell
    Python 3.7.3 (default, Mar 27 2019, 22:11:17)
    [GCC 7.3.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    (InteractiveConsole)
    >>>

    Realizando la consulta para obtener todos los registros de la tabla Libro:

    >>> from catalogo.models import Libro
    >>> Libro.objects.all()
    <QuerySet [<Libro: Yo, Robot>, <Libro: El fin de la eternidad>, <Libro: El arte de la guerra>]>
    >>>

  2. Imprime los datos del libro con id = 3:

    Dentro el Shell de Django:

    >>> l3 = Libro.objects.get(pk=3)
    >>> l3
    <Libro: El arte de la guerra>
    >>> print(l3.id, l3.titulo, l3.editorial, l3.numPag, l3.autores)
    3 El arte de la guerra Obelisco 112 1
    >>>

  3. Imprime los préstamos del usuario Hugo haciendo uso de la relacion uno a muchos entre Prestamo y Usuario:

    Dentro el Shell de Django:

    >>> from catalogo.models import Prestamo
    >>> Prestamo.objects.filter(usuario__nombre="Hugo")
    <QuerySet [<Prestamo: 1>, <Prestamo: 4>]>

  4. Imprime la lista de todos los libros prestados al usuario Hugo incluyendo nombre de usuario, libros prestados y fecha de préstamo de cada libro.

    Dentro el Shell de Django:

    >>> from catalogo.models import Usuario, Libro, Prestamo
    >>> u1 = Usuario.objects.get(nombre="Hugo")
    >>> u1
    <Usuario: Hugo Mac Rico>
    >>> prestamos = Prestamo.objects.filter(usuario=u1)
    >>> prestamos
    <QuerySet [<Prestamo: 1>, <Prestamo: 4>]>
    >>> for p in prestamos:
    ...     for l in p.libros.all():
    ...         reg = (u1.nombre, l.titulo, p.fechaPre)
    ...         print(reg)
    ...
    ('Hugo', 'Yo, Robot', datetime.date(2019, 6, 24))
    ('Hugo', 'El arte de la guerra', datetime.date(2019, 6, 24))
    ('Hugo', 'El fin de la eternidad', datetime.date(2019, 6, 24))
    >>>