2013-08-02 1 views
1

Я довольно новичок в django. просто прошел через учебник и попытался поиграть с моим собственным приложением.добавление колонки в таблицу в django

Я столкнулся со следующей ситуацией: Я понял, что после запуска моего проекта (после запуска syncdb) я оставил столбец в одной из своих таблиц, когда я изначально написал файл models.py. Я отредактировал файл models.py, добавив столбец, а затем запустил: django-admin.py flush.

Он упрямо не добавил колонку. В оболочке manage.py, запрашивающей table.objects.all(), будет ошибка, при которой новый_колон не существует.

Пока, наконец, я не пошел в dbshell и вручную уронил таблицу, а затем побежал DBSync снова ...

делает флеш не делать выше, в первую очередь? Каков наилучший способ изменить таблицу после того, как вы создали их в django?

спасибо!

ответ

1

Что вы ищете, это способ миграции данных (в частности, схематизация). Пожалуйста, обратитесь к South Documentation за простой инструмент для этого.

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

+0

Спасибо, это то, что я искал. –

1

Посмотрите на принятый ответ на этот вопрос Why don't my south migrations work?.

Итак, есть несколько ситуаций, в которых нужно выполнять южные команды. Будьте осторожны, это может привести вас к проблемам.

1

Ответ Даниэля охватывает то, что вам нужно знать, но, чтобы ответить на ваш другой вопрос, flush просто перевернет вашу базу данных обратно в состояние постсинхронизации. Он удалит все ваши данные и заполнит их любыми объектами initial_data, но не будет проверять модели для новых полей и т. Д.

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

  • Нет связанных вопросов^_^