Django filter datetime base только по дате
Я пытаюсь отфильтровать набор запросов в BaseDatatableView на дату, введенную пользователем в следующем формате: mm/dd / yyyy. Таким образом, start_date находится в этом формате и будет преобразован в datetime с 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
спасибо
1 ответов
один вариант (разбить дату в фильтре):
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)