【问题标题】:Django queryset filter max values for listDjango queryset过滤列表的最大值
【发布时间】:2018-06-24 14:23:36
【问题描述】:

我想知道是否有任何方法可以将列表传递给 django 查询集并限制列表中每个项目的最大/最小/最新/最旧值。

基本上是这样的:

serial_list = [2231, 2232, 2233]
data_queryset = Data.objects.filter(serial__in=serial_list).latest()

我完全知道上面的代码不起作用。我只是想说明一个查询集,它将为serial 位于serial_list 中的每个对象返回.latest() 值。

【问题讨论】:

  • 该代码确实有效,您是否尝试过使用日期字段,例如:Data.objects.filter(serial__in=serial_list).latest('date_field_name')
  • @heemayl 只返回一个对象;查询集中的最新对象。我正在尝试为列表中的每个项目获取最新对象。所以在这种情况下,查询集应该有三个对象。列表中每个连续剧的最新版本。

标签: python django django-models django-queryset


【解决方案1】:

您可以遍历serial_list,并在查询模型后从查询集中获取latest() 元素。在这里,使用字典理解将来自serial_list 的每个迭代项设置为键,并将查询集上的相关latest() 项设置为值:

serial_list = [2231, 2232, 2233]
{serial_: Data.objects.filter(serial=serial_).latest('date_field') \
           for serial_ in serial_list}

【讨论】:

  • 这行得通!我没想到会用这样的字典
猜你喜欢
  • 1970-01-01
  • 2011-08-11
  • 2020-01-01
  • 2018-01-21
  • 2016-03-22
  • 2013-12-12
  • 2014-07-13
  • 2017-10-12
  • 2012-12-19
相关资源
最近更新 更多