说你的表用户(一):id和活动(很多):type,created_on,你如何得到最新活动的所有用户.type是'message'?
这是我到目前为止的查询:
User.objects.filter(activity__type='message').annotate(Max('activity__created_on'))
但它从那时起就没有了:
User.objects.filter(activity__type='message').annotate(Max('activity__created_on'))[0].activity.latest('created_on').type
不等于'message'。
答案 0 :(得分:0)
我相信它不起作用,因为当你filter(activity__type='message')
Django正在浏览该用户的所有活动并丢弃用户时,如果它的活动类型不是{{1}它不会丢弃活动。
如果您正在使用PostgreSQL,您可以使用distinct
并从User模型中获取字段,但不是实际的实例,但这可能足够您了:
message
如果您不使用PostgreSQL或需要完整的Activity.objects.order_by('user__username', 'created_on')\
.distinct('user__username')\
.filter(type='message')\
.values('user__username')
实例,则需要在Python中手动执行,例如:
User
哪个不理想,因为它意味着更多的查询。
希望有所帮助。