class News(models.Model):
title = models.CharField(max_length=70)
full_text = models.TextField()
pub_date = models.DateField('-pub_date')
然后我跑了 python manage.py shell 无论我对News.pub_date有什么价值,都是无
我正在使用sqlite3,当我打开数据库时,我可以看到日期值存在。但是当我恢复一个对象时,pub_date是None。之后我没有发现任何错误 S = News.objects.all()[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能够成功存储日期数据但无法恢复。并且re-syncdb没有帮助我做了好几次。只有phisycal删除数据库和数据库的娱乐结构解决了这个问题。 *
答案 0 :(得分: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)