dea*_*ase 5 django django-models django-orm
我的模型中有字段:
class Order(BaseModel):
created_at = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)
我需要计算当前月份创建的所有Order对象.我怎么能在我的观点中这样做?
Ana*_*kov 11
可能的方法之一.
from datetime import datetime
current_month = datetime.now().month
Order.objects.filter(created_at__month=current_month)
Run Code Online (Sandbox Code Playgroud)
请参阅https://docs.djangoproject.com/en/stable/ref/models/querysets/#month以供参考.
如果你只是在当月之后,这很容易,因为你不必担心结束日期 - 毕竟之后什么都不能创建.
start_of_month = datetime.date.today().replace(day=1)
orders_this_month = Order.objects.filter(created_at__gte=start_of_month)
Run Code Online (Sandbox Code Playgroud)
(当前)接受的答案不正确。如评论中所述,OP可能希望获得当年的当前月份。一年中没有当前月份。好吧,大多数人都想要第一。
所以我宁愿做
Order.objects.filter(created_at__gte=timezone.now().replace(day=1, hour=0, minute=0, second=0, microsecond=0))
Run Code Online (Sandbox Code Playgroud)
以上也解决了时区问题。