我的模型中有字段:
class Order(BaseModel):
created_at = models.DateTimeField(auto_now_add=True)
我需要计算当月创建的所有Order对象。 我怎样才能在我的观点中这样做?
答案 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()