gpt4 book ai didi

database - Django 仅基于日期过滤日期时间

转载 作者:太空狗 更新时间:2023-10-30 01:43:02 24 4
gpt4 key购买 nike

我正在尝试根据用户按以下格式输入的日期过滤 BaseDatatableView 中的查询集:mm/dd/yyyy。所以 start_date 是那种格式,并且会用 strptime 转换成日期时间,见下文。

我想将它与数据库中的日期日期时间字段进行比较,但我想准确匹配月、日、年,而不考虑时间。这就是我所拥有的,所以不起作用。

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

谢谢

最佳答案

最佳选择(Django 1.9+。- For datetime fields, casts the value as date。允许链接其他字段查找。采用日期值。)

# 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)

Django < 1.9 的选项

一个选项(在过滤器中分解日期):

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
)

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

from datetime import datetime
start_date = datetime.strptime(start_date, DATE_FORMAT)
start_date_range = (
# The start_date with the minimum possible time
datetime.combine(start_date, datetime.min.time()),
# The start_date with the maximum possible time
datetime.combine(start_date, datetime.max.time())
)
qs = qs.filter(start_date__range=start_date_range)

关于database - Django 仅基于日期过滤日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22085398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com