繁体   English   中英

DateField始终返回None值

[英]DateField always return None value

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能够成功存储日期数据,但无法恢复。 和重新syncdb没有帮助我做了几次。 只有数据库的物理删除和数据库的重新创建结构才能解决该问题。 *

您可能想要设置auto_now_add参数

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM