django仅从查询集中的日期时间中提取年份

时间:2018-04-18 19:06:45

标签: python django

我有一个包含列数据时间的购买表。我想选择我今年所做的所有购买。贝娄是我的代码,但没有用!

import datetime
today = datetime.date.today()
year = Purchases.objects.filter(date__year = today.year)

我预计年份应该是2018年至201年的2018年提取的

2 个答案:

答案 0 :(得分:2)

您可以使用ExtractYear功能,例如:

from django.db.models.functions import ExtractYear

qs = Purchases.objects.annotate(year=ExtractYear('date')).filter(year = today.year)

答案 1 :(得分:1)

在查询时,我们可以从DateField类型的模型字段获得fieldname__year年份(用于比较)。如果我们有一个名为' purchase_date'在我们的模型中,我们可以过滤特定年份的数据:

MyModel.objects.filter(purchase_date__year=targetyear)

在您的情况下,如果列名是datatime。您可以在当年完成购买:

import datetime
today = datetime.date.today()
purchases = Purchases.objects.filter(datatime__year=today.year)