【问题标题】:Sort list of objects by date, where objects don't have name按日期排序对象列表,其中对象没有名称
【发布时间】:2020-01-29 14:05:19
【问题描述】:

我正在尝试加入两个查询集并按日期对最终列表进行排序。查询集没有名称的东西。所以我不太确定如何用 lambda 引用它们。

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。但在这种情况下,我的 foo 是什么?

我觉得周一早上让我的脑海里浮现了一层迷雾。

谢谢!

【问题讨论】:

    标签: python django list django-queryset


    【解决方案1】:

    试试:

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

    【讨论】:

      【解决方案2】:

      当您使用.values() 时,生成的查询集包含dicts,而不是模型实例。因此,您必须使用r['checkin'] 而不是r.checkin

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

      供参考,这里是documentation of .values()的链接

      【讨论】:

      • 谢谢你的解释,我认为它必须与'.values()'做一些事情
      猜你喜欢
      • 2017-08-19
      • 2019-05-01
      • 1970-01-01
      • 2019-07-05
      • 1970-01-01
      • 2017-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多