我的数据如下:
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
以获得具有最新条目每个名称的另一个查询集?
答案 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')