如何在django中获得最新的基于2列的数据库记录



我有一个表,其中有外键F1, F2和用于存储创建的datetime的列的组合。

如何查询外键组合的最新记录

这些是表中的列。

ChallengeID, UserID, createdDatetime, points

如果一个challengeID是CH1,我们有2个用户U1, U2,这个组合可能有多个记录。例如,CH1和U1,有5条记录。其中一个是基于createdDatetime的最新记录。

我如何从所有用户的最新记录中获得使用Django ORM的特定挑战的点数值?

类似:

CH1, U1 - PV1

CH1, U2 - PV2

CH1, U3 - PV3

这是我试过的代码

def challenge_leaderboard(request):
challenge_id = request.GET.get('challenge_id')
users = RewardPointLog.objects.filter(challenge_user__challenge_id=challenge_id).values_list('user', flat=True)
users_points = {}
for user in users:
points = RewardPointLog.objects.filter(challenge_user__challenge_id=challenge_id, challenge_user__user=user).latest('created_datetime').points
users_points[user.id] = points
return Response(users_points, status=200)

如果你使用的是PostgreSQL

RewardPointLog.objects.filter(challenge_user__challenge_id=challenge_id).order_by('challenge_user__user', '-created_datetime').distinct('challenge_user__user')

https://docs.djangoproject.com/en/3.2/ref/models/querysets/截然不同

相关内容

  • 没有找到相关文章

最新更新