按年份过滤两个日期字段之间的查询集
Filter queryset by year between two date fields
我的模型中有一个 start_date 和一个 end_date 字段。用户应能够通过选择年份值来过滤记录,以便如果包括所选年份,则应显示跨越多年的记录。
例如:
所选年份:2019
start_date
end_date
2017-03-12
2021-09-03
2019-12-12
2020-06-05
我可以像这样通过 SQL 进行原始查询:
SELECT * FROM `orders` WHERE '2019' BETWEEN YEAR(`start_date`) AND YEAR(`end_date`);
如何使用 Django ORM 执行此操作并避免原始 SQL 查询?因为我已经在多个过滤器中使用了ORM,只剩下这一点。
试试这个:
YourModel.objects.filter(
start_date__year__lte=2019,
end_date__year__gte=2019,
)
我的模型中有一个 start_date 和一个 end_date 字段。用户应能够通过选择年份值来过滤记录,以便如果包括所选年份,则应显示跨越多年的记录。
例如: 所选年份:2019
start_date | end_date |
---|---|
2017-03-12 | 2021-09-03 |
2019-12-12 | 2020-06-05 |
我可以像这样通过 SQL 进行原始查询:
SELECT * FROM `orders` WHERE '2019' BETWEEN YEAR(`start_date`) AND YEAR(`end_date`);
如何使用 Django ORM 执行此操作并避免原始 SQL 查询?因为我已经在多个过滤器中使用了ORM,只剩下这一点。
试试这个:
YourModel.objects.filter(
start_date__year__lte=2019,
end_date__year__gte=2019,
)