Exprimiendo el ORM de Django

PyConES 2017

Héctor Pablos López

#whoami

Héctor Pablos López

Front-End developer @ StyleSage

www.stylesage.co

hector@stylesage.co

Introducción

  • Principalmente DML (no DDL)

ORM

Expresiones

Expresiones

¿Qué son?

Un valor (simpe o calculado) que se puede usar en una orden de DML

.filter(expression)

.order_by(expression)

.annotate(expression)

.aggregate(expression)

Expresiones

Representa el valor de un campo

Objetos F()

Car.ojects.filter(kilometers=F('build_year'))

SELECT * FROM car
 WHERE car.kilometers = car.build_year

Expresiones

Encapsulan colecciones de argumentos con nombre

Objetos Q()

Car.ojects.filter(Q(kilometers__gt=1000) | Q(build_year__lt=1990))

SELECT * FROM car
 WHERE car.kilometers > 1000 OR car.build_year < 1990

Expresiones

Anotar (dar nombre) a una expresión

annotate()

Company.objects.annotate(num_products=Count('products'))

SELECT count(*) AS num_products FROM company

Expresiones

Combinar expresiones

Exprimiendo el ORM de Django

By Hector Pablos

Exprimiendo el ORM de Django

  • 1,367