我正在创建一个包含使用Django的DateTimeField的API,但我正在获得以下错误"TypeError:描述符'strftime'为'datetime '。Date '对象不适用于'str'对象"我试着检查了不同的来源,但我还没有找到解决方案。
- 错误来自于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有两个方法:
- strftime:用于将日期对象转换为字符串。
- strptime:用于将字符串转换为日期对象。
在您的情况下,您需要第二个。您的代码将是:
start_date = datetime.strptime(request.POST['start_date'],'%Y-%m-%d')