进行查询以获取最新对象,不包括obj.x的重复项

时间:2012-09-27 23:49:07

标签: python django

  

可能重复:
  Django, What's the best ,fastest way to get only first and last element from something, Customer.objects.xxxx

嗯这很难解释,但这就是发生的事情......

我的模特A有x和日期

有多个A具有相同的x和不同的日期。

自:

A.x = 1 (newest)
A.x = 1
A.x = 1 (oldest)
A.x = 2  

我想只得到每个x的最新值,在这种情况下是第一个,最后一个,不包括旧的x = 1重复。

我曾想过做一些令人讨厌的循环或使用itertools,但我不确定实现这个目标的最佳方法是什么。

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

启动Django 1.4 .distinct()查询集API接受字段参数

所以我想你可以做这样的事情

Queryset.order_by('-date').distinct('field')

您可以详细了解here

答案 1 :(得分:0)

您可以使用latest() queryset方法。它与使用.order_by()[0]基本相同。

这很好,因为我总是忘记在使用带有日期的order_by()时是否需要使用“ - ”。

latest_object = Model.objects.latest("date/datetime fieldname")