2011-02-16 25 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

相關問題