django同步db问题

时间:2010-05-25 07:34:17

标签: python django django-models

在django模型中说这个模型存在于details / models.py

    class OccDetails(models.Model):
       title = models.CharField(max_length = 255)
       occ = models.ForeignKey(Occ)

因此,当创建同步数据库时,将创建以下字段

以后再添加两个字段,并且同步数据库会使新字段无法创建。如何解决这个问题,以下是什么是auto_now = true

这些是新字段

         created_date = models.DateTimeField(auto_now_add=True)
         modified_date = models.DateTimeField(auto_now_add=True, auto_now=True)

2 个答案:

答案 0 :(得分:7)

  

syncdb为INSTALLED_APPS中尚未创建表的所有应用创建数据库表。

     

Syncdb不会改变现有表格
  syncdb只会为尚未安装的模型创建表。它永远不会发出ALTER TABLE语句来匹配安装后对模型类所做的更改。对模型类和数据库模式的更改通常涉及某种形式的歧义,在这些情况下,Django必须猜测要进行的正确更改。存在关键数据在此过程中丢失的风险。

你可以

  • 发出手动ALTER TABLE命令
  • DROP TABLE特定表(将丢失数据)并再次运行syncdb
  • 运行django-admin sqlclear以获取sql语句列表以清除整个数据库并运行这些命令(将刷新数据库 - 您将丢失所有现有数据)或

  

DateField.auto_now:每次保存对象时自动将字段设置为NOW()。对“最后修改”的时间戳有用。请注意,始终使用当前日期;它不仅仅是您可以覆盖的默认值。

因此,每次调用modified_date

时,object.save()列都会自动更新

答案 1 :(得分:3)

这是Django的常见问题。正如Amarghosh所说,syncdb无法修改现有表的架构。

已创建

South来解决此问题。

我推荐它。