在Django 1.9中应该使用什么代替syncdb?

2024-05-13 19:22:37 发布

您现在位置:Python中文网/ 问答频道 /正文

看看这个:

$ pypy ./manage.py syncdb
/usr/lib64/pypy-2.4.0/site-packages/django/core/management/commands/syncdb.py:24: RemovedInDjango19Warning: The syncdb command will be removed in Django 1.9
  warnings.warn("The syncdb command will be removed in Django 1.9", RemovedInDjango19Warning)

(cut)

我运行了一个quick google search,但是找不到答案-我应该使用什么来代替syncdb


Tags: thedjangoinpymanageusrsitebe
3条回答

由于the migration systemdjango 1.7一起引入,不推荐使用syncdb

现在您可以使用makemigrations跟踪更改。这会将模型更改转换为python代码,使它们可以部署到其他数据库。当需要对数据库进行进一步修改时,可以使用data migrations

创建迁移后,必须应用它们:migrate

因此,与其使用syncdb,不如使用makemigrations,然后使用migrate

更改模型中的某些内容后的开发工作流:

./manage.py makemigrations
./manage.py migrate

在你的生产系统上:

./manage.py migrate

奖励:您不需要为每次更改运行migrate。如果有多个更改尚未应用,django将以正确的顺序为您运行它们。

你一定要用migration system。它允许您跟踪models.py中的更改,并为数据库创建迁移。迁移系统使用命令^{}创建迁移,使用命令^{}迁移数据库。

如果出于任何原因,您需要以相同的方式创建数据库syncdb,那么有一个命令标志会导致migrate以相同的方式工作。只有当您真正需要并且知道自己在做什么时,才应该这样做。例如,为您选择的连续集成系统创建空数据库。

python manage.py migrate auth
# performs migrations for auth and contenttypes contrib apps

python manage.py migrate --run-syncdb
# creates the rest of the database

在Django 1.9.1测试。

您应该使用django 1.7中引入的makemigrationsmigrate命令

https://docs.djangoproject.com/en/1.7/topics/migrations/

相关问题 更多 >