Django计算当月创建的对象

时间:2013-11-20 13:31:39

标签: django django-models django-orm

我的模型中有字段:

class Order(BaseModel):
    created_at = models.DateTimeField(auto_now_add=True)

我需要计算当月创建的所有Order对象。 我怎样才能在我的观点中这样做?

4 个答案:

答案 0 :(得分:11)

可能的方法之一。

from datetime import datetime
current_month = datetime.now().month

Order.objects.filter(created_at__month=current_month)

请参阅https://docs.djangoproject.com/en/stable/ref/models/querysets/#month以供参考。

答案 1 :(得分:5)

如果你只是在当月之后,这很容易,因为你不必担心结束日期 - 毕竟现在也无法创造。

start_of_month = datetime.date.today().replace(day=1)
orders_this_month = Order.objects.filter(created_at__gte=start_of_month)

答案 2 :(得分:4)

(当前)接受的答案不正确。如评论中所述,OP可能希望获得当年的当前月份。一年中没有当前月份。好吧,大多数人都想要第一个。

所以我宁愿

Order.objects.filter(created_at__gte=timezone.now().replace(day=1, hour=0, minute=0, second=0, microsecond=0))

以上内容也解决了时区问题。

答案 3 :(得分:0)

通过添加.count操作

,这对我而言效果最好
import datetime

Order.objects.filter(created_at__gte=datetime.datetime.today().replace(day=1, hour=0, minute=0, second=0, microsecond=0)).count()