2011-02-16 93 views
1

我对django很陌生,也许我在问一些非常基本的东西。request.POST ['time']必须是一个datefield()

我有以下代码:

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

这个“时间”岗位价值是timefield,我需要处理的时间价值,但我的一切是crush.time是一个字符串,然后我得到了下面的错误,当我尝试的过程:

'unicode' object has no attribute 'hour' 

回答

1

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

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

的POST multidictionary包含字符串 - 它不知道蟒蛇的数据类型。你必须把它解析成一个日期时间对象。看看datetime文档。

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/

+0

没有其他办法可以做到不使用这个类implemetation?我只想将这个字符串解析成一个日期时间对象..它看起来像解析一个简单对象很多工作。 – david 2011-02-16 20:38:07

相关问题