#django #django-models #annotations
#django #django-модели #примечания
Вопрос:
Возьмите простой класс, подобный этому.
class MyModel(models.Model):
last_updated = models.DateTimeField(auto_now_add=True)
last_viewed = models.DateTimeField(auto_now_add=True)
Все, что я хочу сделать, это отсортировать выходные данные запроса к этой модели по времени между этими двумя полями, чтобы данные, которые не просматривались с момента их обновления, отображались выше, чем те, которые были.
Я чувствую, что должен иметь возможность аннотировать таблицу и сортировать по этой аннотации, но я не гений, когда дело доходит до аннотаций (или необработанного SQL, если на то пошло). Может ли кто-нибудь направить меня в правильном направлении?
Комментарии:
1. было ли решение @sdolan достаточно хорошим, чтобы выбрать его в конце концов?
Ответ №1:
Вы можете сделать что-то вроде этого:
MyModel.objects.extra(select={'offset': 'last_viewed - last_updated'}).order_by('offset')
Подробное объяснение смотрите в документах.