Форум сайта python.su
Как добавить дополнительное поле в моделе Django ?
Я пытаюсь добавить поле description, но django выдает ошибку.
Код с модели:
class Post(models.Model): category = models.ForeignKey(Category) date = models.DateField('auto_now_add') title = models.CharField(max_length=150) # description = models.CharField(max_length=1000) text = models.TextField() see = models.NullBooleanField() def __unicode__(self): return self.title
Отредактировано Saturn (Июнь 17, 2012 13:39:58)
Офлайн
Какую ошибку выдает django, мы должны сами догадаться? В какой момент вы добавляете поле, мы тоже должны угадать? Опишите полностью, что происходит.
В общем, ладно. Используйте South, учите английский и пользуйтесь поисковиком.
Отредактировано fata1ex (Июнь 17, 2012 13:52:22)
Офлайн
fata1ex
Я добавляю когда уже создана БД и в таблице Post есть поля (приведенные выше) кроме description, который я пытаюсь добавить. Потом запускаю python manage.py syncdb, но поле не добавляется.
Вопрос, я все сделал правильно чтобы добавить поле или что-то упустил ?
fata1ex
то что учить английский надо это я и без Вас знаю.
Офлайн
Используйте South.
Офлайн
Если South не используете, то
ALTER TABLE post ADD description VARCHAR(255);
import this
Отредактировано fashust (Июнь 17, 2012 15:34:30)
Офлайн
Спасибо всем. South - может и хорош но лучше уже классика SQL.
fashust то что нужно.
Офлайн
Классика SQL может и лучше, но еще лучше понимать, что в CharField аргумент max_length является зависимым от БД, ибо, например MySQL позволяет устанавливать длину поля varchar только 255 символов. Больше вы просто не сможете.
Конкретно в Вашем случае, если действительно нужно использовать max_length=1000, ставьте TextField(max_length=1000).
А South таки действительно не причем.
Офлайн
ziroПочему же? С помощью него этот вопрос решается практически мгновенно, причем не надо задумываться о том, какая используется БД, не надо писать SQL-код, который иногда может не совпадать с тем, который формирует Django.
А South таки действительно не причем.
Офлайн
ziro
Классика SQL может и лучше, но еще лучше понимать, что в CharField аргумент max_length является зависимым от БД, ибо, например MySQL позволяет устанавливать длину поля varchar только 255 символов. Больше вы просто не сможете.
Конкретно в Вашем случае, если действительно нужно использовать max_length=1000, ставьте TextField(max_length=1000).
А South таки действительно не причем.
Офлайн
fata1exziroПочему же? С помощью него этот вопрос решается практически мгновенно, причем не надо задумываться о том, какая используется БД, не надо писать SQL-код, который иногда может не совпадать с тем, который формирует Django.
А South таки действительно не причем.
> schemamigration app –auto
> migrate app
import this
Офлайн