Un buen punto de partida para hacer Django consultas es la documentación de Django sí mismos.
http://docs.djangoproject.com/en/dev/topics/db/queries/
Éstos son algunos ejemplos:
select * from table
=
ModelName.objects.all()
filtrado:
select * from table where column = 'foo'
=
ModelName.objects.filter(column='foo')
Específicamente con respecto al uso de distintos utiliza el método distinto() de un conjunto de consultas de Django.
Aquí está el enlace relevante en la documentación. http://docs.djangoproject.com/en/dev/ref/models/querysets/#distinct
Actualización: El ORM lo ayuda permitiéndole usar interacciones orientadas a objetos con sus datos. No escribe código que traduce el conjunto de resultados de su consulta en un conjunto de objetos. Lo hace automáticamente Ese es el cambio fundamental en el proceso de pensamiento que tienes que hacer.
Empiezas a pensar en términos de 'Tengo este objeto, necesito obtener todos los otros objetos que son como' Entonces puedes preguntarle al ORM por esos objetos. ORM, necesito todos los objetos de la clase de productos que tienen un atributo del color "azul" lenguaje ORM específica
de Django para que se:
products = Product.objects.filter(color='blue')
Esto se hace en lugar de:
- escribir su consulta SQL,
- adecuadamente escapan todos los argumentos,
- la conexión a la base de datos,
- consultando la base de datos y manejando los errores de conexión/consulta,
- obteniendo el conjunto de resultados,
iterando en el conjunto de resultados traduciendo los valores devueltos en objetos adecuados a los que puede llamar métodos.
Ese es el valor en el uso de un ORM. Simplificación de código y tiempo de desarrollo reducido.
Esto lo hizo por mí. El punto clave es que el ORM extrae un conjunto de objetos ("objeto" ~ = "fila completa"), pero una fila de resultados de SELECT DISTINCT no se puede conectar a un solo objeto. Entonces, si necesita objetos, use el ORM; si necesita un resultado donde una fila no se puede asignar de manera confiable a un solo objeto, use SQL directamente. Gracias. – sienkiew