2012-08-23 20 views
1
class News(models.Model): 
    title = models.CharField(max_length=70) 
    full_text = models.TextField() 
    pub_date = models.DateField('-pub_date') 

然後我運行 蟒蛇manage.py殼 無論我爲News.pub_date做的值是無的DateField總是返回無值

我使用sqlite3的,當我打開數據庫中,我可以看到日期值在那兒。但是當我恢復一個對象pub_date是無。我不後 S = News.objects.all(reveive任何錯誤)[0] .pub_date 在此處輸入代碼

>>> from face.models import News 
>>> from datetime import datetime 
>>> s=News() 
>>> s.pub_date 

>>> s=News() 
>>> s.title="hgello" 
>>> s.full_text="hello there" 
>>> s.pub_date = datetime.now() 
>>> s.show=True 
>>> s.save() 
>>> t=News.objects.all() 
>>> t 
[<News: This is title>, <News: second text>, <News: sample>, <News: hgello>] 
>>> t=t[3] 
>>> print t.pub_date 
    None 

* 我已經解決了這個問題。我剛剛刪除了sqllite3的數據庫文件。我認爲這是因爲最初它被命名爲DateTimeField,然後我將其更改爲DateField。但我做了syncdb之間的變化。所以django能夠成功存儲日期數據,但無法恢復。並重新syncdb沒有幫助我做了好幾次。只有數據庫的phisycal刪除和數據庫的娛樂結構才解決了這個問題。 *

+0

你似乎是混亂的查詢和指定模型。你在那裏用'-pub_date'來達到什麼目的? –

+0

什麼是參數中的'-pub_date'? –

+0

你可以忽略這個-pub_date它假設是數據庫中的列名作爲DateField對象的參數 – simar

回答

0

你可能想設置auto_now_add parameter

pub_date = models.DateField(auto_now_add=True) 

或者,您可以覆蓋.save()方法:

class News(models.Model): 
    title = models.CharField(max_length=70) 
    full_text = models.TextField() 
    pub_date = models.DateField() 

    def save(self, *args, **kwargs): 
     if not self.id: 
      self.pub_date = datetime.datetime.today() 
     super(News, self).save(*args, **kwargs) 
+0

auto_now_add可能更合適? – simar

+0

auto_now_add does not幫助 – simar

+0

是的,我的錯誤,它應該是'auto_now_add'。 –