Допустим, у меня есть следующая модель:
class MyModel(models.Model):
name = models.CharField(max_length=255)
date_1 = models.DateField(null=True, blank=True)
date_2 = models.DateField(null=True, blank=True)
В каждой модели будет хотя бы одно из полей даты. То, что я хочу сделать, это заказать по следующему - если модель имеет date_1
, заказать его по date_1
. Если у него нет date_1
, закажите его по date_2
. Делая что-то вроде этого:
MyModel.objects.all().order_by('date_1', 'date_2')
прикрепит все нулевые значения date_1 к концу. Принимая во внимание, что я хотел бы иметь «чередование». Например, я хотел бы получить следующий вывод (в формате json):
[
{"id": 1, "date_1": "2020-02-01", "date_2": null},
{"id": 4, "date_1": null, "date_2": 2020-02-02}, # orders by date_2 as there is no date_1
{"id": 2, "date_1": "2020-02-03", "date_2": "2020-02-01"}, # orders by date_1, ignores date_2
{"id": 3, "date_1": "2020-02-04", "date_2": null},
]
Возможно ли это сделать с django ORM?