ошибка эволюции джанго - PullRequest
1 голос
/ 15 июля 2011

Я пытаюсь использовать django-evolution для модификации некоторых моделей из существующего проекта.Теперь, когда я захожу в syncdb, он говорит, что мне нужно выполнить 'evolve'.

Когда я пытаюсь запустить:

python manage.py evolve --hint --execute

Мне показывают эту ошибку в терминале, но яЯ все еще новичок в этом, поэтому у меня возникли проблемы с устранением этой ошибки.

Код ошибки:

Traceback (most recent call last):
File "manage.py", line 11, in <module>
execute_manager(settings)
File "/home/steve/lib/python2.6/site-packages/django/core/management/__init__.py", line 361, in execute_manager
utility.execute()
File "/home/steve/lib/python2.6/site-packages/django/core/management/__init__.py", line 306, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/steve/lib/python2.6/site-packages/django/core/management/base.py", line 192, in run_from_argv
self.execute(*args, **options.__dict__)
File "/home/steve/lib/python2.6/site-packages/django/core/management/base.py", line 219, in execute
output = self.handle(*args, **options)
File "/var/sites/placeholder/placeholder/placeholder/apps/django_evolution/management/commands/evolve.py", line 87, in handle
hinted_evolution = diff.evolution()
File "/var/sites/placeholder/placeholder/placeholder/apps/django_evolution/diff.py", line 197, in evolution
changed_attrs[prop] = current_field_sig.get(prop, ATTRIBUTE_DEFAULTS[prop])
KeyError: 'field_type'

Спасибо, и, надеюсь, кто-то может мне помочь.

Стив

Ответы [ 2 ]

2 голосов
/ 09 мая 2013

Я подробно остановлюсь на ответе Стива.

Чтобы просмотреть две таблицы, которые django_evolution создает в базе данных вашего проекта, используйте команду:

python manage.py sql django_evolution

Указанная выше команда на самом деле не нужна.Вы можете сразу перейти к удалению таблиц или перезагрузке таблиц.Обратите внимание, что для работы вышеуказанной команды вам понадобится приложение под названием 'django_evolution' в вашем INSTALLED_APPS.Я приведу одну команду, которая работала для меня на Django1.2.7.Да, я все еще на версии 1.2.7, потому что пока у меня не было оснований для обновления.Различные способы решения этой проблемы приведены в конце моего ответа.Для сброса используется следующая команда:

python manage.py reset django_evolution

Чтобы принять запрос на сброс, введите «yes».

Теперь выполните синхронизацию базы данных с:

python manage.py syncdb

Эта командаскажу вам, что вам нужно развиваться.Введите следующую команду, чтобы произошла эволюция:

python manage.py evolve --hint

Если вы согласны с подсказкой, предоставленной вышеупомянутой командой, продолжайте и выполните эволюцию:

python manage.py evolve --hint --execute

Подтвердите выполнение с помощьювведите «yes».

Все ваши старые таблицы и связанные с ними данные будут работать без проблем.Для проверки введите:

python manage.py runserver

Как удалить таблицу из SQLite3 в DJango?

2 голосов
/ 18 июля 2011

Я решил это, и я опубликую для всех, кто сталкивался с той же проблемой.

Я понял, что нахожусь в очень стабильной части моего проекта. Поэтому я сделал резервную копию своей базы данных и пошел дальше и удалил 2 таблицы, с которыми работает django_evolution.

Затем я запустил syncdb, чтобы снова создать таблицы.

Это, похоже, сработало, и я смог сделать свои эволюции.

...