我需要在South迁移之前或之后调用syncdb

Dan*_*mov 10 django django-apps django-syncdb django-south

我是南方人,所以我想知道我是否需要打电话

./manage.py syncdb
Run Code Online (Sandbox Code Playgroud)

或做

./manage.py schemamigration appname --auto
./manage.py migrate appname
Run Code Online (Sandbox Code Playgroud)

在所有情况下,南方都可以自行处理.

mum*_*ino 21

南方不是项目范围.它适用范围广.
有些应用程序使用南方,有些应用程序不使用它.

如果应用程序集成在南方,则进行数据库更改,您将使用

./manage.py schemamigration appname --auto
./manage.py migrate appname
Run Code Online (Sandbox Code Playgroud)

但并非所有应用程序都与南方集成.

当您向项目中添加不使用南方的新应用时,您需要调用./manage.py syncdb这些应用.(例如,django.contrib应用程序)

总之,使用./manage.py syncdb时,应用程序并不南方使用,并./manage.py migrate南综合应用.

  • 我发现South的行为令人困惑,直到我意识到South改变了syncdb的行为.安装了一个,syncdb是由South管理的应用程序的无操作.因此,您可以在网站上运行syncdb,即使它有一些由南方管理的应用程序.首次安装南部时必须小心,syncdb和初始迁移是一致的,但是一旦完成,它就会很好地容错. (3认同)

小智 8

在创建或安装新应用程序MyApp时,应首先执行以下命令:

./manage.py schemamigration MyApp --inital
./manage.py migrate MyApp
Run Code Online (Sandbox Code Playgroud)

之后,无论何时执行,./manage.py syncdb您都会看到:

Syncing...
Creating tables ...
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)

Synced:
 > south
 > django.contrib.auth
 > django.contrib.contenttypes
 > django.contrib.sessions
 > django.contrib.sites
 > django.contrib.messages
 > django.contrib.staticfiles
 > django.contrib.admin
 > django.contrib.admindocs

Not synced (use migrations):
 - MyApp
(use ./manage.py migrate to migrate these)
Run Code Online (Sandbox Code Playgroud)

您可以看到,manage.py syncdb能够区分由South(Not synced部分)管理的应用程序和不由South(部分)管理的应用程序Synced.它还提醒您使用./manage.py migrate.

重要的一点是让南通过执行管理新的应用程序./manage.py schemamigration MyApp --inital./manage.py migrate MyApp 之前执行./manage.py syncdb.