Нужно ли мне звонить syncdb до или после миграции на юг

Я новичок в South, поэтому мне интересно, нужно ли мне когда-либо звонить

./manage.py syncdb

или делать

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

достаточно во всех случаях которые South может обрабатывать самостоятельно.

Ответ 1

Юг не является проектом. Это приложение широко.
Некоторые приложения используют юг, некоторые приложения не используют его.

если приложение интегрировано на юг, чтобы выполнить изменения db, вы будете использовать

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

но не все приложения интегрированы с югом.

Когда вы добавляете новое приложение, которое не использует юг для вашего проекта, вам необходимо вызвать ./manage.py syncdb для этих приложений. (Например, django.contrib apps)

Короче говоря, используйте ./manage.py syncdb, когда приложение не использует юг, а ./manage.py migrate для южного интегрированного.

Ответ 2

При создании или установке нового приложения 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 может различать приложения, управляемые югом (Not synced), и те, которые не управляются югом (Synced). Он также напоминает вам использовать ./manage.py migrate.

важная точка - это позволить Югу управлять новым приложением, выполняя ./manage.py schemamigration MyApp --inital и ./manage.py migrate MyApp до выполнение ./manage.py syncdb.