У меня есть эта модель:
class Visit(models.Model):
timestamp = models.DateTimeField(editable=False)
ip_address = models.IPAddressField(editable=False)
Если пользователь посещает несколько раз в течение одного дня, как мне отфильтровать уникальные строки на основе поля ip? (я хочу уникальные посещения на сегодня)
today = datetime.datetime.today()
yesterday = datetime.datetime.today() - datetime.timedelta(days=1)
visits = Visit.objects.filter(timestamp__range=(yesterday, today)) #.something?
EDIT:
Я вижу, что могу использовать:
Visit.objects.filter(timestamp__range=(yesterday, today)).values('ip_address')
чтобы получить ValuesQuerySet только для полей ip. Теперь мой QuerySet выглядит так:
[{'ip_address': u'127.0.0.1'}, {'ip_address': u'127.0.0.1'}, {'ip_address':
u'127.0.0.1'}, {'ip_address': u'127.0.0.1'}, {'ip_address': u'127.0.0.1'}]
Как мне отфильтровать это для уникальности, не оценивая QuerySet и не принимая удар по дб?
# Hope it's something like this...
values.distinct().count()