the*_*tor 68 python django django-models
我已经定义了一个模型并通过它创建了它的相关数据库manager.py syncdb.现在我已经为模型添加了一些字段,我syncdb再次尝试,但没有输出.在尝试从我的模板中访问这些新字段时,我得到一个"No Such Column"异常,这让我相信syncdb实际上没有更新数据库.这里的命令是什么?
zlo*_*ady 138
从Django 1.7+开始,内置迁移支持允许保留数据的数据库模式迁移.这可能是比下面的解决方案更好的方法.
另一个不需要额外应用程序的选项是使用内置manage.py函数导出数据,清除数据库并恢复导出的数据.
下面的方法将更新您的应用程序的数据库表,但将完全销毁这些表中存在的任何数据.如果您对应用模型所做的更改不会破坏旧模式(例如,您添加了一个新的可选字段),则可以先将数据转储然后重新加载,如下所示:
python manage.py dumpdata <your_app> > temp_data.json
python manage.py reset <your_app>
python manage.py loaddata temp_data.json
Run Code Online (Sandbox Code Playgroud)
python manage.py dumpdata <your_app> > temp_data.json
python manage.py sqlclear <your_app> | python manage.py dbshell
python manage.py syncdb
python manage.py loaddata temp_data.json
Run Code Online (Sandbox Code Playgroud)
(该reset命令已弃用,然后在Django 1.5中删除)
如果您的更改破坏了旧架构,则无法使用 - 在这种情况下,像South或Django Evolution这样的工具非常棒.
Cas*_*law 39
从Django 1.7开始,您现在可以使用本机迁移执行此操作.赶紧跑
python manage.py makemigrations <your app name>
python manage.py migrate
Run Code Online (Sandbox Code Playgroud)
另一个工具是django evolution.大多数情况下不需要丢弃表格.
只需将其安装为任何其他django应用程序并运行:
python manage.py evolve --hint --execute
| 归档时间: |
|
| 查看次数: |
78983 次 |
| 最近记录: |