request.POST ['time']必须是datefield()

时间:2011-02-16 18:46:09

标签: python django

我对django很新,也许我在问一些非常元素的东西。

我有以下代码:

crush.time = request.POST['time']

这个“时间”帖子值是一个时间段,我需要处理作为时间值,但我得到的是crush.time是一个字符串,然后当我尝试处理时出现以下错误:

'unicode' object has no attribute 'hour'

3 个答案:

答案 0 :(得分:1)

POST multidictionary包含字符串 - 它不知道python数据类型。您必须将其解析为日期时间对象。查看日期时间文档。

答案 1 :(得分:1)

假设您的'时间'字段的格式为H:M:S或H:M,那么您可以创建一个django表单来为您执行解析工作(请记住,您不要不一定需要输出表格):

在您的forms.py中:

from django import forms

class BasicTimeForm(forms.Form):
    time = forms.TimeField()

在您看来:

if request.method == 'POST': 
    form = forms.BasicTimeForm(request.POST)
    if form.is_valid():
        crush.time = form.cleaned_data['time']

发帖后, crush.time 现在应该包含datetime.time。

(改编自http://docs.djangoproject.com/en/dev/topics/forms/

答案 2 :(得分:1)

只需使用Python datetime库转换为时间对象:

datetime.datetime.strptime(request.POST['time'], '%H:%M:%S').time()