带着疑问
您可以进行查询以获取
QuerySet
包含字典。在这种情况下,每本字典都包含一个
'user_id'
钥匙,和
'first_timestamp'
钥匙,比如:
from django.db.models import Min
data =Attendance.objects.values('user_id').annotate(
first_timestamp=Min('timestamp')
).order_by('user_id')
然后可以枚举结果,并按如下方式打印:
for data in attendances:
print 'User ID : {}'.format(data['user_id'])
print 'Timestamp : {}'.format(data['timestamp'])
用一个
set
保持
已经看到了
用户
如果不可能编写这样的查询(例如,给了您一个列表)。我们可以先执行排序,然后维护一组已经看到的用户ID:
from operator import attrgetter
sorted_attendances = sorted(attendances, key=attrgetter('timestamp'))
seen_users = set()
for attendance in sorted_attendances:
if attendance.user_id not in seen_users:
seen_users.add(attendance.user_id)
print 'User ID : {}'.format(data.user_id)
print 'Timestamp : {}'.format(data.timestamp)
然而,这种方法通常更昂贵,因为数据库传输的数据量更大,因此要处理的数据量也更大。