Django - сопоставить datetimeField/timeField и сравнить
Я хочу сравнить DateField и TimeField в наборе запросов с текущей датой. Я искал часами, но ничего не нашел. Много пробовал с Q/F-Object, но тоже не нашел решения. И теперь я здесь и надеюсь, что кто-то знает, как решить эту проблему:) - Кстати. разделение на дату и время не моя вина, и нет никакого способа изменить его на DateTimeField (слишком много зависимостей в других проектах).
class Model(models.Model):
date = models.DateField()
time = models.TimeField()
В MySQL я бы сделал что-то вроде:
SELECT * FROM app_model WHERE CAST (CONCAT (CAST (дата в виде CHAR),' ',CAST(время в виде CHAR)) в качестве DATETIME) >= NOW()
Спасибо за любые предложения!
1 ответ
Вы можете сделать это с помощью или запретить набор запросов (объекты Q):
now = datetime.datetime.now()
future_models = Model.objects.filter(Q(date__gt=now.date()) | (Q(date=now.date()) & Q(time__gte=now.time())))
При этом выбираются все экземпляры, для которых дата прошла сегодня, и все экземпляры, для которых дата является сегодняшней, а время больше или равно текущему времени.