按年份过滤两个日期字段之间的查询集

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,
)