Сортировать список объектов по дате, когда объекты не имеют названия - PullRequest
1 голос
/ 30 сентября 2019

Я пытаюсь объединить два набора запросов и отсортировать окончательный список по датам. Дело в том, что наборы запросов не имеют имен. Поэтому я не совсем уверен, как ссылаться на них с помощью лямбды.

ur_dates =list(unavailable_rooms_prices.values('checkin','checkout').distinct().order_by('checkin'))
ar_dates=list(available_rooms_prices.values('checkin','checkout').distinct().order_by('checkin'))

if ur_dates is not None:
    ar_dates.extend(ur_dates)


sorted_list = ar_dates.sort(key=lambda r: r.checkin)

Я пытаюсь это сделать именно так, но получаю сообщение об ошибке, утверждая, что объект dict не имеет атрибута 'checkin'.

Как я понимаю, это должен быть Foo.checkin. но в этом случае, что я задумала?

Я думаю, что утро понедельника навевает туман.

Спасибо!

Ответы [ 2 ]

1 голос
/ 30 сентября 2019

Когда вы используете .values(), результирующий набор запросов содержит dict с, а не экземпляры модели. Поэтому вы должны использовать r['checkin'] вместо r.checkin:

sorted_list = ar_dates.sort(key=lambda r: r['checkin'])

. Для справки приведена ссылка на документацию .values()

1 голос
/ 30 сентября 2019

Попробуйте:

sorted_list = sorted(ar_dates, key=lambda r: r['checkin'])
#or
ar_dates.sort(key=lambda r: r['checkin']) #sort is inplace
...