Django: сортировать модель по разнице между двумя ее полями - PullRequest
7 голосов
/ 27 мая 2011

Возьмите простой урок, подобный этому.

class MyModel(models.Model):
    last_updated = models.DateTimeField(auto_now_add=True)
    last_viewed  = models.DateTimeField(auto_now_add=True)

Все, что я хочу сделать, - это отсортировать выходные данные запроса по этой модели по времени между этими двумя полями, чтобы объекты, которые не просматривались с момента их обновления, показывали более высокое значение, чем объекты, которые имели.

Мне кажется, что я должен иметь возможность аннотировать таблицу и сортировать по этой аннотации, но я не гений, когда дело доходит до аннотаций (или, в данном случае, чистого SQL). Может ли кто-нибудь пнуть меня в правильном направлении?

1 Ответ

19 голосов
/ 27 мая 2011

Вы можете сделать что-то вроде этого:

MyModel.objects.extra(select={'offset': 'last_viewed - last_updated'}).order_by('offset')

См. документы для подробного объяснения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...