Django-查询集中每个对象的最新对象

时间:2018-10-08 09:38:36

标签: python django django-queryset django-orm

class Order(models.Model):
   # ..fields
   user = models.ForeignKey(User, on_delete=models.CASCADE)
   date_added = models.DateTimeField(auto_now_add=True)

我想获取所有用户,并为每个用户添加其最新订单-例如date_add最大的用户Order。我想在单个查询中进行此操作(就像在SQL中一样,只需使用一个查询即可完成)。

这是我尝试过的:

users = User.objects.all().annotate(last_order=Max('order__date_added'))

但这只给了我最后一个订单的日期,我想要Order对象本身。

1 个答案:

答案 0 :(得分:0)

型号:

class User(models.Model):
    ...
    def get_latest_order(self):
        return self.order_set.latest('date_added')

观看次数

user = User.objects.all()
for u in user:
    print(u.get_latest_order())