Ошибка Django South с начальной миграцией

У меня есть новый проект и приложение Django 1.3, которое я создал. Я добавил юг к моему settings.py и еще не выполнил syncdb. Когда я выполняю следующие команды для южного учебника и документации, я получил ошибку, показанную ниже.

  • Любые мысли о том, что вызывает проблему? Обновление: Неправильная установка юга (см. ответ).
  • Является ли South 0.7.3 совместимым с Django 1.3? Обновление: Да.

Выполненные команды и ошибка юга

$ python ./manage.py schemamigration qexpenses --initial
Creating migrations directory at '/Users/matthew/development/quest-projects/qexpense-tracker/quexptrkr/../quexptrkr/qexpenses/migrations'...
Creating __init__.py in '/Users/matthew/development/quest-projects/qexpense-tracker/quexptrkr/../quexptrkr/qexpenses/migrations'...
 + Added model qexpenses.Buyer
 + Added model qexpenses.Vendor
 + Added model qexpenses.Department
 + Added model qexpenses.Project
 + Added model qexpenses.PurchaseType
 + Added model qexpenses.PurchaseOrder
Created 0001_initial.py. You can now apply this migration with: ./manage.py migrate qexpenses
(qexpense-tracker)[email protected]:~/development/quest-projects/qexpense-tracker/quexptrkr
$ python ./manage.py migrate
Traceback (most recent call last):
  File "./manage.py", line 14, in <module>
    execute_manager(settings)
  File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/django/core/management/__init__.py", line 438, in execute_manager
    utility.execute()
  File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/django/core/management/__init__.py", line 379, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/django/core/management/base.py", line 191, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/django/core/management/base.py", line 220, in execute
    output = self.handle(*args, **options)
  File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/south/management/commands/migrate.py", line 105, in handle
    ignore_ghosts = ignore_ghosts,
  File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/south/migration/__init__.py", line 171, in migrate_app
    applied = check_migration_histories(applied, delete_ghosts, ignore_ghosts)
  File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/south/migration/__init__.py", line 72, in check_migration_histories
    for h in histories:
  File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/django/db/models/query.py", line 107, in _result_iter
    self._fill_cache()
  File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/django/db/models/query.py", line 772, in _fill_cache
    self._result_cache.append(self._iter.next())
  File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/django/db/models/query.py", line 273, in iterator
    for row in compiler.results_iter():
  File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 680, in results_iter
    for rows in self.execute_sql(MULTI):
  File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 735, in execute_sql
    cursor.execute(sql, params)
  File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/django/db/backends/util.py", line 34, in execute
    return self.cursor.execute(sql, params)
  File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py", line 234, in execute
    return Database.Cursor.execute(self, query, params)
django.db.utils.DatabaseError: no such table: south_migrationhistory
(qexpense-tracker)[email protected]:~/development/quest-projects/qexpense-tracker/quexptrkr
$ 

Конфигурация

Я запускаю OS X 10.6.7. Ниже приведен вывод pip 1.0 requirements.txt для моего virtualenv:

$ cat requirements.txt 
Django==1.3
South==0.7.3
distribute==0.6.15
virtualenv==1.6
virtualenvwrapper==2.6.3
wsgiref==0.1.2

Ответы

Ответ 1

Ответ Кена Кокрена на вопрос StackOverflow Как мне не удалось работать с моими южными мигрантами для Django ключ.

Для нового проекта и приложения Django мне пришлось выполнить следующие шаги:

  • Добавьте South в INSTALLED_APPS в settings.py, но не добавляйте свои приложения
  • Запустите syncdb, чтобы добавить Django и South в базу данных. South изменяет syncdb, поэтому важно иметь South в INSTALLED_APPS.
  • Добавить приложения в INSTALLED_APPS в settings.py
  • Запустите python manage.py schemamigration app_name --initial для каждого приложения
  • Запустить python manage.py migrate app_name

Прочтите инструкции - нет, все инструкции

Я был так рад начать использовать South, что я пропустил чтение установочная документация. Я просто установил South с помощью pip install south, а затем просто добавил его в мой INSTALLED_APPS. Это была моя ошибка.

Настройка вашей установки Django в разделе монтажной документации:

После добавления Юга вам нужно запустить ./manage.py syncdb, чтобы сделать South таблицы отслеживания миграции (South не использует миграции для своих моделей по разным причинам).