首页 > 解决方案 > 如何打印上个月创建的对象而不是使用 datetime.timedelta(days=30)

问题描述

我正在制作一个 Django 应用程序来打印每个月的费用

很长一段时间以来,我一直在搜索如何打印在特定月份(或可能是上个月)创建的对象(费用),我检查了许多与此类似的堆栈溢出问题,但无法找到合适的答案。

很多人用

datetime.timedelta(days=30)

但是这种方法如何才能正确打印特定月份的费用。

我想使用类似的方法

datetime.timedelta(previous month)

有没有办法做到这一点?

标签: djangodjango-models

解决方案


这是一个很好的方法

首先,在您的views.py文件中:

  1. 从宣布今天的日期开始
    today = datetime.date.today()
  1. 需要过滤掉上个月创建的对象(这里以五月为例)
    may_month_expenses = 
    Expenses.objects.filter(created__month='05',created__year=today.year)

解释:

费用模型的名称

objects.filter()用于打印满足括号中条件的对象。

created是费用中的DateTimeField

created__month='05'指定对象应该是在 5 月创建的(第 5 个月)

created__year = today.year很重要,因为您只想打印在今年 5 月(2021 年)创建的对象。

这将打印在 2021 年 5 月创建的对象


推荐阅读