Tôi đã có mô hình này:Nhận giá trị khác biệt của QuerySet bởi lĩnh vực
class Visit(models.Model):
timestamp = models.DateTimeField(editable=False)
ip_address = models.IPAddressField(editable=False)
Nếu người dùng truy cập nhiều lần trong một ngày, làm thế nào tôi có thể lọc cho hàng độc đáo dựa trên các lĩnh vực ip? (Tôi muốn thăm độc đáo cho ngày hôm nay)
today = datetime.datetime.today()
yesterday = datetime.datetime.today() - datetime.timedelta(days=1)
visits = Visit.objects.filter(timestamp__range=(yesterday, today)) #.something?
EDIT:
tôi thấy rằng tôi có thể sử dụng:
Visit.objects.filter(timestamp__range=(yesterday, today)).values('ip_address')
để có được một ValuesQuerySet chỉ các lĩnh vực ip. Bây giờ QuerySet của tôi trông như thế này:
[{'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'}]
Làm thế nào để lọc này cho tính độc đáo mà không cần đánh giá QuerySet và lấy db hit?
# Hope it's something like this...
values.distinct().count()
trùng lặp có thể xảy ra [Chọn giá trị khác biệt từ một lĩnh vực bảng] (http://stackoverflow.com/questions/2466496/select-distinct-values-from-a-table-field) –