Когда я пытаюсь вернуть документы на основе созданной даты, я получаю пустой список, когда я точно знаю, что в базе данных есть документы, которые соответствуют критериям. Я использовал почтальон для отправки запроса, который будет вводить строку пользователем, например. "Tue Apr 28 2020"
. Этот строковый ввод затем будет преобразован в объект datetime, например:
def get(self):
try:
body = request.get_json()
search_field = datetime.datetime.strptime(body, '%a %b %d %Y') #format string to datetime object
next_day = search_field
next_day += relativedelta(days=1) #Set the end of the range to the next day
search_field = search_field.replace(tzinfo=datetime.timezone.utc).isoformat()
next_day = next_day.replace(tzinfo=datetime.timezone.utc).isoformat()
print(search_field) #Verify the fields are correct : 2020-04-28T00:00:00+00:00
print(next_day) #2020-04-29T00:00:00+00:00
date_search = Reports.objects.filter(__raw__={'creation_timestamp' : {'$gte' : search_field, '$lte' : next_day}}).to_json() #This is where the documents should be filtered for return
print(date_search)
return Response(date_search, mimetype="application/json", status=200) #The document/s should be returned here as a JSON array.
except Exception as e:
print(e)
return make_response(jsonify(message='Something went wrong :('), 401)
Вот частичная модель базы данных:
class Reports(db.Document):
creation_timestamp = db.DateTimeField(default=datetime.utcnow, required=True)
Когда документ создается, он сохраняется в база данных и время хранится как isoformat()
. Пользователь может вводить поле поиска только в указанном выше формате с помощью средства выбора даты, поэтому я форматирую дату в соответствии с форматом, понятным Mongodb.
Используя приведенный выше код, я получаю пустой список и код состояния 200. Проверка базы данных показывает, что у меня есть документы, которые соответствуют критериям, может кто-нибудь помочь выяснить, что не так? Спасибо.