У меня есть этот запрос:
checkins = CheckinAct.objects.filter(time__range=[start, end], location=checkin.location)
Это прекрасно подходит для того, чтобы сообщить мне, сколько проверок произошло в моем диапазоне дат для определенного местоположения.Но я хочу знать, сколько проверок было сделано уникальными пользователями.Итак, я попробовал это:
checkins = CheckinAct.objects.filter(time__range=[start, end], location=checkin.location).values('user').distinct()
Но это не работает, я получаю пустой массив.Есть идеи, почему?
Вот моя модель CheckinAct:
class CheckinAct(models.Model):
user = models.ForeignKey(User)
location = models.ForeignKey(Location)
time = models.DateTimeField()
---- Обновление ------ Итак, теперь я обновил свой запрос, чтобы он выглядел так:
checkins = CheckinAct.objects.values('user').\
filter(time__range=[start, end], location=checkin.location).\
annotate(dcount=Count('user'))
Но я все еще получаю несколько объектов назад, которые имеют одного и того же пользователя, например:
[{'user': 15521L}, {'user': 15521L}, {'user': 15521L}, {'user': 15521L}, {'user': 15521L}]
---- Обновление 2 ------ Вот еще кое-чтоЯ пытался, но я все еще получаю много идентичных пользовательских объектов при регистрации объекта checkins.
checkins = CheckinAct.objects.filter(
time__range=[start, end],
location=checkin.location,
).annotate(dcount=Count('user')).values('user', 'dcount')
logger.info("checkins!!! : " + str(checkins))
Регистрирует следующее:
checkins!!! : [{'user': 15521L}, {'user': 15521L}, {'user': 15521L}]
Обратите внимание, что существует 3 экземпляра.одного и того же объекта пользователя.Это работает правильно или нет?Есть ли другой способ прочитать то, что возвращается в объекте dict?Мне просто нужно знать, сколько уникальных пользователей зарегистрировались в этом конкретном месте за указанный промежуток времени.