获取在同一天创建的所有对象

时间:2016-06-21 13:22:09

标签: python django datetime django-models python-datetime

我有一个包含created_at DateTimeField的模型。我想过滤模型,以便在今天,一个月到现在创建所有对象。

例如:日期= 2016年6月21日 现在我想要在21/06年创建所有对象,直到现在,无论年份如何。

编辑: 确切地说,我有存储用户出生日期的模型。我希望得到所有在这一天出生的用户。

我尝试使用__range,__ gte,__ month& __天。这件事没有用。

4 个答案:

答案 0 :(得分:1)

感谢您的意见和解答。我使用this答案来解决问题。我已从代码中删除了timedelta(days)

答案 1 :(得分:0)

在查询集外部进行过滤的示例。 获取您想要的日期并删除不需要的结果

from datetime import datetime, timedelta

twodaysago = str(datetime.strptime(str(datetime.now().date()-timedelta(days=2)), '%Y-%m-%d')).split()[0]

现在执行您的查询并按此过滤它,您也可以在查询过滤器中执行此操作,但如果您需要一些额外的操作,请在您的代码中执行此操作

date_filtered = [x for x in query\
                if datetime.strptime(
                    x.get('created_at ', ''),
                    '%Y-%m-%d') > twodaysago
                ]

答案 2 :(得分:0)

不确定我是否正确理解了问题,但请尝试以下方法:

before = datetime.date(2016, 06, 21)
today = datetime.date.today()

MyModel.objects.filter(
    created_at__month__range=(before.month, today.month),
    created_at__day__range=(before.day, today.day)
)

答案 3 :(得分:-1)

根据您的问题我可以理解,您希望获得与今天相同的所有对象,无论年份如何。

我会用这样的东西。看看这是否有帮助。

from datetime import datetime
today = datetime.now()

OneModel.objects.filter(created_at__day = today.day.__str__(), 
    created_at__month =  today.month.__str__())

有关详情,请参阅此链接:How can I filter a date of a DateTimeField in Django?