【问题标题】:How to get my database to reflect changes made to models.py?如何让我的数据库反映对 models.py 所做的更改?
【发布时间】:2014-10-13 06:30:32
【问题描述】:

我对我的模型进行了更改,但我终其一生都无法弄清楚如何让我的数据库反映我的模型。到目前为止,我已经尝试了以下方法:

python manage.py shelldb
SELECT * FROM sqlite_master WHERE type='table';
DROP TABLE appname_modelname;

当我尝试时,我得到:“未知命令:shelldb”。

我也试过了:

python manage.py dbshel​​l DROP TABLE accounts_userreview;

没有错误,但我的数据库仍然没有反映我的模型。

最后,我只是通过将数据库拖到垃圾箱然后执行 syncdb 完全删除了我的数据库,然后它让我创建了一个新的超级用户,但仍然创建的数据库不反映对我的模型的更改。

我在这里不知所措,我还能在这里做什么?另外,我是学习 Django 的新手,模型和我的数据库之间是否有某种层?我会假设有因为删除然后重建数据库不起作用。

在此不胜感激。

【问题讨论】:

  • 如果您得到答案,请将其标记为已验证。
  • python manage.py migrate 是您所需要的。
  • 如果删除数据库并重新运行 syncdb 不起作用,那么您要么没有保存模型文件,要么没有更新您认为拥有的模型文件。 Django 没有添加任何类型的层,那有什么意义呢?

标签: django django-models


【解决方案1】:

如果您使用的是 Django South 。 Django 1.7 具有内置迁移功能。

更多信息migrations

【讨论】:

  • 我正在运行 1.6,我对 South 的理解是,在我对模型进行更改之前,我需要使用它才能在这种情况下有用。
【解决方案2】:

在终端中运行这些命令为 Django 1.7 进行迁移 python manage.py makemigrations python manage.py syncdb

对于 Django

【讨论】:

    猜你喜欢
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多