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

时间:2011-06-13 21:20:22

标签: django django-south django-apps django-syncdb

我是South的新手,所以我想知道是否需要致电

./manage.py syncdb

或正在做

./manage.py schemamigration appname --auto
./manage.py migrate appname
所有cases South can handle on its own

都足够了。

2 个答案:

答案 0 :(得分:21)

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

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

./manage.py schemamigration appname --auto
./manage.py migrate appname

但并非所有应用都与南方集成。

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

简而言之,当应用使用南方时,使用 ./manage.py syncdb ./manage.py migrate 用于< strong>南方综合应用。

答案 1 :(得分:8)

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

./manage.py schemamigration MyApp --inital
./manage.py migrate MyApp

在您执行./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)

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

重点是让South在执行./manage.py schemamigration MyApp --inital之前执行./manage.py migrate MyApp./manage.py syncdb 来管理新应用。< / p>