2009-06-11 31 views
19

Có cách nào để có được tất cả các đối tượng có ngày chưa đầy một tháng trước ở django hay không.Nhận tất cả các mặt hàng chưa đầy một tháng

Cái gì như:

items = Item.objects.filter(less than a month old).order_by(...) 
+0

Ý của bạn là "tất cả các đối tượng"? Bạn có nghĩa là tất cả các đối tượng của một loại cụ thể? –

+0

Vâng, tất cả các đối tượng thuộc loại "Item" –

Trả lời

32

định nghĩa của bạn về một "tháng" là gì? 30 ngày? 31 ngày? Trước đây, điều này nên làm điều đó:

from datetime import datetime, timedelta 
last_month = datetime.today() - timedelta(days=30) 
items = Item.objects.filter(my_date__gte=last_month).order_by(...) 

TẠi lợi thế của việc tra cứu trường gte.

+1

Điều này không thành công khi datetime.today() là ngày 1 tháng 3 - tháng trước là tháng 2, chứ không phải tháng 1. Nếu bạn không cần nó chính xác, điều này sẽ hoạt động tốt (30 ngày trước = tháng trước) nhưng nếu bạn thực sự cần phải biết những gì đã xảy ra tháng trước, không có cách nào dễ dàng để tìm hiểu nó trong python (AFAIK). –

+1

có * relatiedelta * trong ** python-dateutil ** có thể cung cấp cho bạn chính xác trong tháng vừa qua. – Neutralizer

+0

[Ở đây] (https://stackoverflow.com/a/9725093/209050) là một cách để có được tháng trước không sử dụng gì ngoài 'datetime'. – mgalgs

4
items = Item.objects.filter(created_date__gte=aMonthAgo) 

Trường hợp aMonthAgo sẽ được tính theo giờ và giờ.

Các vấn đề liên quan