2011-04-21 16 views
14

que tiene un modelo que se ha configurado de la siguiente manera:Solicitar Django resultados de la consulta por la clave externa

class Log(models.Model): 
    name = models.ForeignKey(User) 
    date = models.DateField() 
    time = models.TimeField() 

Sé que esto no funciona, pero ¿hay alguna otra manera de que pueda ejecutar una consulta algo como esto:

Logs.objects.filter(date=someDate).order_by('name__last_name') 

Sólo necesito el resultado final sea un QuerySet ordenado por el apellido del usuario que está relacionado por el ForeignKey.

Estoy realmente en mi ingenio acerca de este. Cualquier cosa ayudaría: algún método que no he visto, una consulta SQL en bruto real o incluso una idea general para seguir sería muy apreciada.

+3

se añade una s Entra en su consulta. Eso debería ser 'Log.objects.filter (date = someDate) .order_by ('name__last_name')' – DTing

Respuesta

11

La consulta que ingresó parece válida.

Mira el pedido por documentos here.

¿No está funcionando para usted?

por ejemplo (formateado para facilitar la lectura):

>>> units = Unit.objects.filter(color='red').order_by('location__label') 
    >>> print units.query 
    SELECT `samples_unit`.`id`, `samples_unit`.`location_id`, `samples_unit`.`color` 
     FROM `samples_unit` 
INNER JOIN `storages_container` 
     ON (`samples_unit`.`location_id` = `storages_container`.`id`) 
    WHERE `samples_unit`.`color` = red 
    ORDER BY `storages_container`.`label` ASC 
+1

Funciona, ahora sí. @DTing señaló un error de ortografía muy trivial que tuve en mi llamada que causaba todo el problema. De alguna manera, ¡no pude deducir eso de los mensajes de error! – chandsie

Cuestiones relacionadas