按照外键排序Django查询结果

36

我有一个模型,设置如下:

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

我知道这样不行,但是否有其他方法可以运行类似这样的查询:

Logs.objects.filter(date=someDate).order_by('name__last_name')
我只需要最终的结果是按与ForeignKey相关的用户的姓氏排序的一个QuerySet。我真的对这个很无助。任何帮助都会有所帮助:一些我没有考虑过的方法、实际的原始SQL查询,甚至只是追求的一般想法。

4
你在查询中在Log后面加了一个s。应该是Log.objects.filter(date=someDate).order_by('name__last_name') - dting
1个回答

40

您输入的查询看起来是有效的。

请查看这里的order by文档(点击此处)

它对您无效吗?

例如 (为了更容易阅读进行格式化):

    >>> 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
它现在可以工作了。@DTing指出了我在调用中的一个非常微不足道的拼写错误,这导致了整个问题。不知何故,我只是无法从错误消息中推断出来! - chandsie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接