Tôi đang cố gắng lọc người dùng theo ngày, nhưng không thể cho đến khi tôi có thể tìm ngày đầu tiên và cuối cùng của người dùng trong db. Trong khi tôi có thể có bộ lọc kịch bản của tôi ra dups sau này, tôi muốn làm điều đó ngay từ đầu bằng cách sử dụng của Django distinct
vì nó làm giảm đáng kể. Tôi cố gắngDjango - nhận các ngày riêng biệt từ dấu thời gian
User.objects.values('install_time').distinct().order_by()
nhưng vì install_time
là một timestamp
, nó bao gồm Date and time (mà tôi không thực sự quan tâm). Kết quả là, những người duy nhất nó lọc ra là những ngày mà chúng tôi có thể truy xuất ngày cài đặt của nhiều người dùng nhưng không phải lần.
Bất kỳ ý tưởng nào về cách thực hiện việc này? Tôi đang chạy này bằng cách sử dụng Django 1.3.1, Postgres 9.0.5, và phiên bản mới nhất của psycopg2.
EDIT: Tôi quên để thêm kiểu dữ liệu của install_time
:
install_time = models.DateTimeField()
EDIT 2: Dưới đây là một số lượng mẫu từ vỏ Postgres, cùng với một lời giải thích nhanh chóng của những gì tôi muốn:
2011-09-19 00:00:00
2011-09-11 00:00:00
2011-09-11 00:00:00 <--filtered out by distinct() (same date and time)
2011-10-13 06:38:37.576
2011-10-13 00:00:00 <--NOT filtered out by distinct() (same date but different time)
Tôi biết về Manager.raw
, nhưng thay vào đó, hãy sử dụng django.db.connection.cursor
để viết truy vấn trực tiếp từ Manager.raw
trả lại số RawQuerySet
, IMO, tệ hơn là chỉ viết truy vấn SQL theo cách thủ công và lặp lại.
có thể trùng lặp của http://stackoverflow.com/questions/3388559/django-model-group-by-datetimes-date – thatwasbrilliant
@thatwasbrilliant Đó là chính xác những gì tôi đang được tìm kiếm; cảm ơn! Loại kỳ quặc mà nó chỉ mất 30 phút trên SO khi nó mất 2 giờ trên Google w/không có kết quả. – Edwin
Bạn cần phải làm việc trên các kỹ năng của Google của bạn :) – thatwasbrilliant