Есть модель типа
class Item(models.Model):
title = models.CharField("заголовок", max_length=50)
date_created = models.DateTimeField("дата создания", default=timezone.now)
raised_to = models.DateTimeField("поднято до", blank=True, null=True)
class Meta:
ordering = ['-date_created']
Мне нужно чтобы сортировка была в основном по дате, но некоторые item'ы могли "подниматься в топ".
Вместо флажка типа is_top (BooleanField), нужно чтобы item поднимался до определенной даты raised_to (например до 26.03.2016).
Item'ы с истекшим raised_to должны сортироваться в общем порядке, по date_created, поэтому сортировка просто по ['-raised_to', '-date_created'] не подходит.
Я пришел к варианту
Item.objects.all().extra(select={'is_raised': '(raised_to IS NOT NULL) AND (raised_to > %s)'},
select_params=[timezone.now()],
order_by=['-is_raised', '-date_created'])
но какой-то он не красивый.
Есть ли более django-way вариант?