我的表格有两列,用于存储特定交易开始和结束的日期。这些列的值是整数,并遵循Python使用的日期时间库的相同模式。
我的逻辑目前适用于不会围绕一周的日间范围,即。周一至周五,周四至周六,周二至周四等。我不确定如何捕捉下周的交易,如周五,周一,周六,周二等。以下是我的发言使用Django:
Deal.objects.filter(Q(deal_day_start__lte=current_day) & Q(deal_day_end__gte=current_day))
显然,这给了我周五 - 周一范围的问题,因为例如当前日可以是星期日,日期时间是0,交易开始日是星期五的5。
有没有一种简单的方法可以使用Django来解决这个问题?如果我使用Python if else语句,我显然可以创建几个分支并捕获这个场景,但我不确定如何使用Django进行此操作。
答案 0 :(得分:2)
鉴于使用的架构,我建议:
Deal.objects.filter(
Q(deal_day_start__lte=current_day, deal_day_end__gte=current_day) |
Q(deal_day_start__lte=current_day, deal_day_end__lt=F("deal_day_start")) |
Q(deal_day_start__gte=current_day, deal_day_end__gte=current_day, deal_day_end__lt=F("deal_day_start"))
)
让我们观察到,结束日的交易必须小于开始日。我们当前有3个案件属于交易期: