Django date.day 查询集查找

Django date.day queryset lookup

正在尝试根据 date.day

在查询集中获取一些对象
#Model

class Entry(models.Model):
    ...
    from = models.DateField(default=datetime.date.today())
    ...

#view

    day = 2
    entryes = Entry.objects.all()

    #works
    day_entryes = entryes.filter(from__day=day)

    #do not work
    day_entryes = entryes.filter(from__day__lte=day)

我收到以下错误:

Join on field 'from' not permitted. Did you misspell 'day' for the lookup type?

为什么不起作用?

Django 在日期字段属性上不支持 __lt__gt__in 等过滤方法。有一个关于这个 #6439.

的工单

您可以使用 extra:

进行您想要的过滤
day = 2
Entry.objects.extra(where=["EXTRACT(day FROM from) <= %s"], params=[day])

我已经用 MySQL 测试了上面的内容,其他 SQL 后端的语法可能不同。