我有一个名为Purchase
的模型,它有两个字段:User
和amount_spent
。
这是models.py
:
class Purchase(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
amount_spent = models.IntegerField()
created_at = models.DateTimeField(auto_now_add=True)
我想从一个用户列表中获取最后一次购买的信息。在views.py
上,我有一个包含一些User
的对象的列表,我想获取列表中每个用户的最后一次购买信息。我找不到一个在单个查询中完成此操作的方法。我检查了QuerySets上的latest()操作符,但它只返回一个对象。
这是views.py
:
purchases = Purchase.objects.filter(user__in=list_of_users)
# purchases contains all the purchases from users, now I need to get the most recent onces for each user.
我现在可以按用户对purchases
进行分组,然后获取最新的,但我想知道是否有一种方法可以将其作为对DB的单个查询。
2条答案
按热度按时间3htmauhk1#
试试这个:
mdfafbf12#
您可以使用
last_purchase_pk
注解User
,然后获取这些并将其添加到这些用户:在此代码片段之后,
users
中的User
对象都将具有一个last_purchase
属性,该属性包含该用户的最后一个Purchase
,如果没有此类购买,则为None
。