Я не уверен, что вы ожидаете, что icontain будет делать при фильтрации данных даты, поэтому вы можете переосмыслить это или уточнить, что вы ожидаете.
В целом вы пытаетесь сделать запрос на основе поля даты. У вас есть 2 варианта. Вам нужно либо преобразовать свое жало в объект даты (или даты / времени), либо отформатировать строку как «гггг-мм-дд».
- редактировать -
Поскольку похоже, что вы действительно пытаетесь использовать строки для поиска дат, это своего рода разъяснение.
То, что вы хотите сделать, будет труднее сделать. Я бы пошел с границей невозможно. Django переводит ваши запросы в SQL и запрашивает вашу базу данных. Тот факт, что ORM существует, не делает невозможным то, что невозможно в SQL (фактически ORM сильно ограничивает то, что вы можете делать). Тем не менее, у вас есть несколько вариантов:
- Напишите python для синтаксического анализа строк и поиска объектов date для их соответствия. Это может быть довольно сложно. Затем вы захотите использовать
Q
объекты из django.db.models
для построения сложного запроса OR. Это, вероятно, будет медленным, когда он попадет в базу данных с любым разумным числом или записями.
- Выясните, как будет выглядеть SQL для генерации того, что вы пытаетесь сделать. Это не будет легким IMO, так как существует так много различий, и базовое представление дат в вашей базе данных не будет строкой, так что вы действительно будете в этом заинтересованы. По сути, это вручную делает то же самое, что делает # 1, кроме как вручную. После того, как вы создали SQL, выполните запрос
raw
.
- Преобразование в использование django-haystack для использования полнотекстового поискового движка. Это большая инфраструктура, и в ней много потенциальных минусов от необходимости переписывать свой код, чтобы предвидеть результаты поисковой системы. В зависимости от того, какой бэкэнд вы решите подключить к стогу сена, он может быть достаточно умен, чтобы понимать введенные строки и правильно искать ... или вам может потребоваться вручную сгенерировать тонну строковых представлений, чтобы они были в вашем поисковом индексе, чтобы они можно правильно запросить. В целом, этот тип вещей - то, в чем превосходят полнотекстовые поисковые системы, потому что они понимают язык. Базы данных нет, они понимают данные, и они не становятся нечеткими.
Более или менее то, что вы просите, довольно сложно. На мой взгляд, наиболее приемлемый вариант - перейти на использование стога сена. Я не могу подчеркнуть, как много недостатков в этом. Вы имеете дело с результатами поиска, а не с экземплярами моделей. В некоторых случаях это не проблема, но в зависимости от требований это может быть довольно болезненным.