2015-03-30 5 views
1

У меня есть приложение в Django 1.6.5. У меня есть модель, где я удалил одно поле, я добавил другое поле, а третий обновил. И когда мы переходим к модели в панели администратора, я получаю сообщение:Колонка не существует в django 1.6.5

ProgrammingError at /admin/app/subscription/ 
column app_subscription.enabled does not exist 

python manage.py syncdb Команда не работает.

+0

Вы мигрировали? – Scironic

+0

@Scironic Я получаю сообщение об ошибке: 'python manage.py migrate app Приложение« app »не использует миграции.' – mark

+0

Вы проверяли, нет ли ссылок на '' 'enabled''' во всех файлах вашего проекта? (особенно в '' 'admin.py''''). –

ответ

2

Django (надеюсь) не изменяет вашу схему базы данных, если вы не явно просите об этом. Команда syncdb работает отлично, но (как задокументировано) она создаст только таблицы, которые еще не существуют (и не помечены как управляемые извне в вашем models).

Итак, вы в основном три варианта здесь:

  1. вручную Бросайте таблицу и повторно запустить syncdb. Это означает, что вы потеряете все наши данные, поэтому вряд ли это «решение»
  2. вручную изменить схему базы данных. Вы не потеряете свои данные, но вам придется повторять ту же самую (ручную) операцию повсюду, где развертывается ваше приложение ... Если она установлена ​​только на вашей локальной рабочей станции, это может быть нормально, иначе это не является надежным профессиональным производством, уровня.
  3. Использование South (который, кажется, должен быть установлен, так как у вас есть migrate команду доступной

Обратите внимание, что решение # 3 означает, что вы создаете файлы миграции для вашего приложения, как описано здесь:. http://south.readthedocs.org/en/latest/tutorial/part1.html#the-first-migration

0

так получились, что я столкнулась с теми же проблемами с Джанго 1.9.x, где я добавил новое поле в моем Джанго приложении, которое вызвало такую ​​же ошибку, как вы уже упоминались выше. Я вошел в dbshell среды с использованием

python manage.p dbshell # I know some use ./manage.py 

и бросил все свои столы, выполнив следующую команду в dbshell уронить таблицы

your_psql=# drop schema public cascade; 

Это уничтожит все ваши таблицы (будьте осторожны, так как вы можете потерять свои данные, там далеко, чтобы сохранить данные!), и вы получите сообщение сразу после выполнения этой команды, сообщите вам, что все сброшено. Сразу же после этого выполните следующую команду, чтобы создать схему снова, в противном случае сервер не будет работать:

your_psql=# create schema public; 

Тогда просто сделать

python manage.py makemigrations # you might not need this, and 
python manage.py migrate 

И вы готовы пойти.

Я знаю, что этот ответ может быть очень поздним, но я надеюсь, что это поможет кому-то.

Cheers

Смежные вопросы