tutorial - the django project
Django order_by() filtro con distinto() (3)
¿Cómo puedo hacer un order_by
como este ....
p = Product.objects.filter(vendornumber=''403516006'')/
.order_by(''-created'').distinct(''vendor__name'')
El problema es que tengo varios proveedores con el mismo nombre y solo quiero el último producto del proveedor.
Espero que tenga sentido?
Tengo este error de base de datos:
Las expresiones SELECT DISTINCT ON deben coincidir con las expresiones iniciales ORDER BY LÍNEA 1: SELECT DISTINCT ON ("search_vendor". "Name") "search_product" ...
¿Simplemente la coincidencia de leftmost order_by () arg y distinct () no funcionó para mí, generando el mismo error (error Django 1.8.7 o una característica)?
qs.order_by(''project'').distinct(''project'')
sin embargo funcionó cuando cambié a:
qs.order_by(''project_id'').distinct(''project'')
y ni siquiera tengo multiples order_by args.
Según su mensaje de error y esta otra pregunta , me parece que esto lo solucionaría:
p = Product.objects.filter(vendornumber=''403516006'')/
.order_by(''vendor__name'', ''-created'').distinct(''vendor__name'')
Es decir, parece que las expresiones DISTINCT ON
deben coincidir con las expresiones ORDER BY
la izquierda. Entonces, al hacer que la columna que usas sea distinct
la primera columna en order_by
, creo que debería funcionar.
Tuve un problema similar pero luego con campos relacionados. Con solo agregar el campo relacionado en distinct()
, no obtuve los resultados correctos.
Quería ordenar por room__name
de room__name
manteniendo a la person
(vinculada a la residency
) única. Repitiendo el campo relacionado de acuerdo con lo siguiente, solucioné mi problema:
.order_by(''room__name'', ''residency__person'', ).distinct(''room__name'', ''residency__person'')
Vea también estas publicaciones relacionadas: