2012-01-23 138 views
1

我有一個模型Django的DateTimeField字段保存

class Unit(models.Model): 
    date = models.DateTimeField() 
    name = models.CharField(max_length = 128) 

然後我跟JS jQuery UI的日期選擇器的視圖。然後,我有

data_send['date'] = $('#date').value; 
data_send['name'] = $('#name').value; 
$.post("/url_1/",data_send, function(data_recieve){ 
    alert(data_recieve); 
}); 

一個ajax後函數,那麼在視圖中我試圖保存單元喜歡

def url_1(request): 
    unit = Unit.objects.get(pk = 1) 
    unit.date = request.POST['date'] 
    unit.name = request.POST['name'] 
    unit.save() 
    return HttpResponse('ok') 

Unit.name變化,但不會unit.date。我使用django 1.3。我沒有csrf保護。我從服務器收到'ok'。 爲什麼unit.date不能保存?

感謝

+0

request.POST ['date']'在你的視圖中有什麼值?我想這是你的日期選擇器格式,對於Django,我認爲日期時間字段格式是YYYY-mm-dd HH:MM:SS我認爲默認日期選擇器是dd-mm-yy – dm03514

+0

哦,是的。所以datepicker格式是dd-mm-yyyy。好吧,也許有一個標準的js序列化程序,或者django對象有類似編碼的東西。 M& –

回答

6

由於Django的日期時間字段是datetime.datetime Python實例的表示,我想確保我插入數據庫之前有一個有效的實例。

您可以使用datetime模塊來實現這一點,而不是保存unit.date作爲一個字符串

from datetime import datetime 

try: 
    valid_datetime = datetime.strptime(request.POST['date'], '%d-%m-%Y') 
except ValueError: 
    # handle this 

,那麼你可以將valid_datetime保存爲您unit.date

strptime的第二個參數是格式化使用下面的值,它應該匹配你的日期選擇器格式 http://docs.python.org/library/datetime.html#strftime-strptime-behavior

+0

錯誤:時間數據'%d。%m。%Y'與格式'24 .01.2012'不匹配。我應該像'%d \。%m \。%Y'一樣逃避點嗎? –

相關問題