转换查询集以获取每个名称的最新条目

时间:2018-11-12 08:43:23

标签: python django

我的数据如下:

class Entry(models.Model):

    name = models.CharField(max_length=100)
    date = models.DateField(auto_now_add=True)
    size = models.FloatField(null=True)

如果我这样做:

qs = Entry.objects.all()

我得到一个包含所有条目的queryset。我将如何转换queryset以获得具有最新条目每个名称另一个查询集

2 个答案:

答案 0 :(得分:0)

我猜你可以这样写:

SELECT *  
FROM t_prm_ad_administration AS r1  
LEFT JOIN t_prm_ad_administration AS r2  
    ON r1.exec_order > r2.exec_order  
    AND r1.filename = r2.filename
WHERE r2.id = :id

您必须先导入qs = Entry.objects.values('name').annotate(Max('date')).order_by()

我没有尝试查询集,但是应该可以。

答案 1 :(得分:0)

鉴于您使用的是Postgres后端,则可以将distinct(*fields)与适当的order_by结合使用:

qs = Entry.objects.all()
qs = qs.order_by('name', '-date').distinct('name')