Как решить проблему strftime TypeError при выполнении POST-запроса в Django?
Я создаю API, который содержит DateTimeField, используя Django, но получаю следующую ошибку "TypeError: descriptor 'strftime' for 'datetime.date' objects does not apply to a 'str' object" Я пытался проверить различные источники, но не нашел решения.
- Ошибка возникает из-за строки start_date.
from datetime import datetime
def question_view(request):
if request.method == 'GET':
return HttpResponse("Вопрос не создан")
elif request.method == 'POST':
poll_question = request.POST['poll_question']
title = request.POST['title']
start_date = datetime.strftime(request.POST['start_date'],'%Y-%m-%d')
Question.objects.create(poll_question=poll_question,title=title, start_date=start_date)
return HttpResponse("Вопрос создан")
else:
return "Попробуйте снова"
Я думаю, что простой способ исправить это - преобразовать объект в строку в соответствии с заданным форматом, используя datetime.strptime
, как указано в doc
Ваш вид теперь будет выглядеть так:
from datetime import datetime
def question_view(request):
if request.method == 'GET':
return HttpResponse("Вопрос не создан")
elif request.method == 'POST':
poll_question = request.POST['poll_question']
title = request.POST['title']
start_date = datetime.strptime(request.POST['start_date'],'%Y-%m-%d')
Question.objects.create(poll_question=poll_question,title=title, start_date=start_date)
return HttpResponse("Вопрос создан")
else:
return "Попробуйте снова"
.
strptime
Разбор строки в объект datetime, заданный соответствующим форматом. (Согласно документации по datetime)
В datetime есть два метода:
- strftime: используется для преобразования объекта даты в строку.
- strptime: используется для преобразования строки в объект даты.
В вашем случае вам нужен второй. Ваш код будет выглядеть следующим образом:
start_date = datetime.strptime(request.POST['start_date'],'%Y-%m-%d')