Python Django滤波器与“天月”一起不考虑年 我想从今天起1个月后过滤我的DATETIME字段,而不考虑年。< /P> class Contract(models.Model): title = models.CharField(max_length=200, null=True) date = models.DateField()

Python Django滤波器与“天月”一起不考虑年 我想从今天起1个月后过滤我的DATETIME字段,而不考虑年。< /P> class Contract(models.Model): title = models.CharField(max_length=200, null=True) date = models.DateField(),python,django,django-models,Python,Django,Django Models,示例过滤器位于: 起始日期:今天日期和月份:01-05%m-%d 至:一个月后:02-05%m-%d 这是我的密码: today = datetime.date.today() foremonth = today + relativedelta(months=1) return_list=[] s = Contract.objects.filter(active=True).order_by('date__month', 'date

示例过滤器位于: 起始日期:今天日期和月份:01-05%m-%d 至:一个月后:02-05%m-%d

这是我的密码:

        today = datetime.date.today()
        foremonth = today + relativedelta(months=1)
        return_list=[]
        s = Contract.objects.filter(active=True).order_by('date__month', 'date__day')
        for i in s:
            k = i.date.strftime("%m-%d")
            if k > today.strftime("%m-%d") and k < foremonth.strftime("%m-%d"):
                return_list.append(i)
        return return_list

如何使用django查询

您可以使用django数据库函数,如前所述,django并将它们与Q组合起来创建查询

您的结果需要满足以下条件,即 大于您的起始日,该月是我们的起始月 或者这一天比你的结束日小,而这个月就是你的结束 月因此,我们需要这些条件的日和月值。 然后,我们使用Q创建查询条件,因为我们需要OR。 最后,我们用日和月值注释契约对象 并应用过滤器。 今天=datetime.date.today 前一个月=今天+相对后一个月=1 开始日=今天 开始月份=今天月份 结束日=前一月日 月末=月初 创建查询 query=Qd_uugte=start_day,m=start_month,Qd_ulte=end_day,m=end_month 用日期和月份注释对象并过滤结果 Contract.objects.annotated=ExtractDay'date',m=ExtractMonth'date'.filterquery