2014-01-29 17 views
1

我試圖從使用Django的視圖格式化爲dd/mm/yyyy格式爲postgresql表格。我收到以下錯誤:通過django保存datefield到Postgresql返回格式錯誤

ValidationError: [u"'2014/01/30' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format."] 

如何更改特定表格或整個數據庫的格式?

我已經試過:ALTER DATABASE myDb SET datestyle TO "ISO, YMD";

然後當我運行SHOW lc_ctype;我得到:

lc_ctype 
------------- 
en_US.UTF-8 

SELECT current_date;回報

date  
------------ 
2014-01-29 

所以它看起來不錯,如果有什麼提出這樣的問題錯誤在Django

我的views.py看起來是這樣的:

logEntry, created = Logs.objects.get_or_create(entrydate=request_data['entryDate'], message=request_data['message']) 
logEntry.save() 

和我的models.py

class Logs(models.Model): 
    entrydate= models.DateTimeField(auto_now_add=True) 
    message = models.CharField(max_length=100) 

回答

0

也許你已經DateTimeField字段,而不是在的DateField模型。 在DateTimeField字段 變化DateTimeField字段此錯誤消息 - >的DateField

+0

,如果是必須YYYY-MM-DD格式的話,我想「2014/01/30'.replace(」 /「」 - ')。但它很醜 – cehmja

1

而不是使在DB的變化,我建議改變你的看法,使您的日期被正確解析成日期時間。此外,將其保存爲一個時區感知DateTime對象可以做如下:

# views 
from django.utils import timezone 
from datetime import datetime 


entrydt = datetime.strptime(request_data['entryDate'], "%Y/%m/%d") 
entrydt = entrydt.replace(tzinfo=timezone.get_current_timezone()) 
logEntry, created = Logs.objects.get_or_create(entrydate=entrydt, 
               message=request_data['message']) 
logEntry.save()