Django 'time__contains' не работает в конкретном случае

Я пытаюсь сравнить время, вставленное в форму, со временем, сохраненным в БД для удаления этой записи. Не понимаю, почему это не работает, если в БД хранится 8:15:00, а пользователь вставил 08:15. Поле в БД TimeField, а для сравнения я использую .filter(time__contains=t), где t - это строка, вставленная из формы. Разница только в нуле перед 8. Когда в БД это хранится как 08:15:00, все работает.

class WateringSchedule(models.Model):
    time = models.TimeField()

t = '08:15'

print(WateringSchedule.objects.filter(time__contains=t).count())

Спасибо.

Вам следует попробовать icontains вместо contains.

Я видел только contains, используемые с CharField. Здесь следует использовать time вместо:

print(WateringSchedule.objects.filter(time__time=t).count())

Здесь я предполагаю, что Django разберет входную строку в объект datetime.time. Вам может понадобиться использовать strptime(), чтобы сделать это вручную.

В качестве альтернативы можно использовать hour и minute.

Вернуться на верх