使用两个条件的Django过滤器

2024-09-29 17:25:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用django开发一个web应用程序。在其他表中,我有一个名为GeneralContract的表,它将issueDate和Expiration Date作为日期字段。在

我想知道在我的情况下,保险代理人在一段时期内从这些合同中获得的利润。例如,如果日期范围是2015年1月15日至2015年2月25日,我希望筛选在此期间之间任何年份发布的所有GeneralContract对象。 (即issueDate__month = Date1.month AND IssueDate.day_gte= Date1.day) AND (IssueDate__month = Date2.month AND IssueDate.day_lte = Date2.day)??在

我尝试了下面的方法,但它并没有给我我想要的结果,我不确定我写这篇文章的语法是否正确,或者我的逻辑是否错误。在

criterion1 = Q(issuedate__month=date1.month)
criterion2 = Q(issuedate__day__gte=date1.day)
criterion3 = Q(issuedate__month=date2.month)
criterion4 = Q(issuedate__day__lte=date2.day)
criterionA = criterion1 & criterion2
criterionB = criterion3 & criterion4
criterionC = criterionA & criterionB
currentGenProfits = GeneralContract.objects.filter(criterionC, cancelled=False)

这是进行过滤逻辑的正确方法吗?在


Tags: and方法逻辑daymonthltegtedate1
1条回答
网友
1楼 · 发布于 2024-09-29 17:25:16

你不能这样做,因为如果date1.day=5和date2.day=4,你将没有结果,你必须一起检查月份和日期,语法是正确的,但逻辑是错误的。在

我建议先从最大的集合开始,然后对其进行过滤

从两个月之间的筛选开始,然后从第一个月但在min日之前的queryset对象中删除,从最后一个月但在max day之后的queryset对象中删除,我认为这样做可以做到。在

相关问题 更多 >

    热门问题