【问题标题】:How to use Django DateTimeField's default如何使用 Django DateTimeField 的默认值
【发布时间】:2013-04-27 07:48:36
【问题描述】:

我正在尝试使用datetime.datetime.now 作为我的pub_date 列的默认值,但不断收到错误消息。

DatabaseError: (1054, "Unknown column 'archive_app.pub_date' in 'field list'")

我只是在python manage.py shell 中测试我的代码,所以我在收到错误时使用的代码就是App.objects.all()

这是我的应用模型代码

import datetime
from django.db import models

class App(models.Model):
    title = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)
    pub_date = models.DateTimeField('pub date', default=datetime.datetime.now)

【问题讨论】:

  • 您是否运行syncdb 或使用migration tool 更新架构?
  • 据我所知,您的默认设置没有问题,但您的数据库抱怨它在表中没有这样的列。

标签: python database django django-models default


【解决方案1】:

当您运行syncdb 时,您是否在App 上定义了pub_date

如果您在 syncdb 之后添加它,那么您是否创建并运行了迁移?

【讨论】:

  • 是的,在我的代码中添加了 pub_date 之后,我运行了 python manage.py syncdb
  • 我的意思是你首先只有两个字段titlevotes 然后运行syncdb。同步后你添加了pub_date?
  • 在这种情况下,您需要运行迁移以将第三列 pub_date 添加到您的表中。 syncdb 不会执行此任务。 syncdb 只读取models.py 并查看是否存在某个表不存在的模型,并在这种情况下创建表。 syncdb 不会为您更改表格。您需要使用south 进行迁移。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-08
  • 1970-01-01
  • 2019-01-10
相关资源
最近更新 更多