Django仅根据日期过滤日期时间

Joe*_*nes 11 database django datetime django-queryset

我试图在用户输入的日期过滤BaseDatatableView中的查询集,格式如下:mm/dd/yyyy.所以start_date采用这种格式,并将转换为带有strptime的日期时间,见下文.

我想将它与数据库中的日期datetimefield进行比较,但我想完全匹配月,日,年,无视时间.这就是我所拥有的,所以不起作用.

class AppointmentListJson(LoginRequiredMixin, BaseDatatableView):
             ....
    start_date = params.get('start_date', '')
    if start_date:  
        qs = qs.filter(start_date__contains=datetime.strptime(
            start_date, DATE_FORMAT))

    return qs
Run Code Online (Sandbox Code Playgroud)

谢谢

Mic*_*l B 31

一个选项(在过滤器中打破日期):

# Assumes the start_date variable is a datetime.date() instance or
# a value such as '2019-07-11'.
qs.filter(start_date__date=start_date)

# Note that you can also "chain" this result
qs.filter(start_date__date__lte=start_date)
Run Code Online (Sandbox Code Playgroud)

另一个选项(设置日期和使用范围的最小/最大时间):

start_date = datetime.strptime(start_date, DATE_FORMAT)
qs = qs.filter(
    start_date__year=start_date.year,
    start_date__month=start_date.month,
    start_date__day=start_date.day
)
Run Code Online (Sandbox Code Playgroud)

  • @JoeLones太棒了!你介意[接受我的回答](http://meta.stackoverflow.com/help/someone-answers)? (3认同)