10

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

./manage.py syncdb

或做

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

在South 可以自己处理的所有情况下就足够了。

4

2 回答 2

21

南部不是项目范围。它是应用程序范围内的。
有些应用程序使用南,有些应用程序不使用它。

如果一个应用程序被集成到南方,做数据库更改,你将使用

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

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

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

简而言之,./manage.py syncdb当应用程序使用南时使用,以及./manage.py migrate集成应用程序。

于 2011-06-13T23:13:41.423 回答
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 syncedsection) 管理的应用程序和那些不由 South (section)管理的应用程序Synced。它还提醒您使用./manage.py migrate.

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

于 2013-06-17T08:10:15.433 回答