Saturn
Июнь 17, 2012 13:38:54
Как добавить дополнительное поле в моделе 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
fata1ex
Июнь 17, 2012 13:47:12
Какую ошибку выдает django, мы должны сами догадаться? В какой момент вы добавляете поле, мы тоже должны угадать? Опишите полностью, что происходит.
В общем, ладно. Используйте South, учите английский и пользуйтесь поисковиком.
Saturn
Июнь 17, 2012 14:15:57
fata1ex
Я добавляю когда уже создана БД и в таблице Post есть поля (приведенные выше) кроме description, который я пытаюсь добавить. Потом запускаю python manage.py syncdb, но поле не добавляется.
Вопрос, я все сделал правильно чтобы добавить поле или что-то упустил ?
fata1ex
то что учить английский надо это я и без Вас знаю.
fata1ex
Июнь 17, 2012 14:20:11
Используйте South.
fashust
Июнь 17, 2012 15:33:16
Если South не используете, то
ALTER TABLE post ADD description VARCHAR(255);
Saturn
Июнь 17, 2012 15:39:25
Спасибо всем. South - может и хорош но лучше уже классика SQL.
fashust то что нужно.
ziro
Июнь 17, 2012 16:18:32
Классика SQL может и лучше, но еще лучше понимать, что в CharField аргумент max_length является зависимым от БД, ибо, например MySQL позволяет устанавливать длину поля varchar только 255 символов. Больше вы просто не сможете.
Конкретно в Вашем случае, если действительно нужно использовать max_length=1000, ставьте TextField(max_length=1000).
А South таки действительно не причем.
fata1ex
Июнь 17, 2012 16:41:11
ziro
А South таки действительно не причем.
Почему же? С помощью него этот вопрос решается практически мгновенно, причем не надо задумываться о том, какая используется БД, не надо писать SQL-код, который иногда может не совпадать с тем, который формирует Django.
> schemamigration app –auto
> migrate app
Saturn
Июнь 17, 2012 19:55:29
ziro
Классика SQL может и лучше, но еще лучше понимать, что в CharField аргумент max_length является зависимым от БД, ибо, например MySQL позволяет устанавливать длину поля varchar только 255 символов. Больше вы просто не сможете.
Конкретно в Вашем случае, если действительно нужно использовать max_length=1000, ставьте TextField(max_length=1000).
А South таки действительно не причем.
После 5.0.3 версии можно сохранять до 65,535
Вот
http://dev.mysql.com/doc/refman/5.0/en/char.html
fashust
Июнь 17, 2012 22:05:50
fata1ex
ziro
А South таки действительно не причем.
Почему же? С помощью него этот вопрос решается практически мгновенно, причем не надо задумываться о том, какая используется БД, не надо писать SQL-код, который иногда может не совпадать с тем, который формирует Django.
> schemamigration app –auto
> migrate app
Согласен с вами, что south - это прекрасно. Но ручками добавить или поменять поле в бд надо тоже уметь. А задумываться о том какая там бд и какой для нее sql c наличием гугла под рукой вроде не такая уж и проблема))