Упорядочить результаты запроса Django по внешнему ключу - PullRequest
20 голосов
/ 22 апреля 2011

У меня есть модель, настроенная следующим образом:

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

Я знаю, что это не работает, но есть ли другой способ, которым я могу выполнить запрос примерно так:

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

Мне просто нужно, чтобы конечный результат был QuerySet, упорядоченным по фамилии пользователя, связанной с ForeignKey.

Я действительно в своем уме об этом. Все поможет: какой-то метод, который я не рассмотрел, настоящий необработанный запрос SQL или даже просто общая идея, будет принята с благодарностью!

1 Ответ

19 голосов
/ 22 апреля 2011

Введенный вами запрос выглядит корректно.

Просмотрите заказ по документам here.

Не работает ли он для вас?

например (отформатировано для удобства чтения):

    >>> 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
...