django: невозможно сохранить данные в модели, ошибка psql - PullRequest
0 голосов
/ 04 июня 2010

У меня есть следующая описанная модель:

class UserProfile(models.Model):
    avatar = models.ImageField(blank = True, upload_to='files')
    about = models.TextField(blank=True)
    rank = models.IntegerField(default = 1)
    solvedProblems = models.ManyToManyField(Composition, blank=True)
    user = models.ForeignKey(User, unique=True)
    country = CountryField(blank = True)
    status = models.ForeignKey(UserRank)

где UserRank:

class UserRank(models.Model):
    rankName = models.CharField(max_length = 300)
    upLimit = models.IntegerField()
    downLimit = models.IntegerField()

Я добавил поле статуса, страны и аватара позже после описания модели, поэтому обновил базу данных через sql.

Теперь база данных выглядит так:

chess_problems = # \ d registration_userprofile; Таблица "public.registration_userprofile" Колонка | Тип | Модификаторы
----------- + ------------------------ + ------------- -------------------------------------------------- -------- id | целое число | notval по умолчанию nextval ('registration_userprofile_id_seq' :: regclass) о | текст | ненулевой ранг | целое число | ненулевой user_id | целое число | ненулевой аватар | изменение характера (100) | страна | изменение характера (2) | status_id | целое число | Индексы: "registration_userprofile_pkey" ПЕРВИЧНЫЙ КЛЮЧ, btree (id) "registration_userprofile_user_id_key" UNIQUE, btree (user_id) Ограничения внешнего ключа: "registration_userprofile_status_id_fkey" ЗАРУБЕЖНЫЙ КЛЮЧ (status_id) ССЫЛКИ registration_userrank (id) ЗАДЕРЖКА ПЕРВОНАЧАЛЬНО ОТЛОЖЕНА "registration_userprofile_user_id_fkey" ЗАРУБЕЖНЫЙ КЛЮЧ (user_id) ССЫЛКИ auth_user (id) ЗАДЕРЖКА ПЕРВОНАЧАЛЬНО ОТЛОЖЕН

Код ошибки, который я вижу:

(, DataError ('значение слишком длинное для символа типа, изменяющегося (2) \ n',),)

Traceback (последний вызов был последним): Файл "/usr/lib/python2.5/site-packages/Django-1.1.1-py2.5.egg/django/core/servers/basehttp.py", строка 280, в работе self.finish_response () Файл "/usr/lib/python2.5/site-packages/Django-1.1.1-py2.5.egg/django/core/servers/basehttp.py", строка 320, в finish_response self.write (данные) Файл "/usr/lib/python2.5/site-packages/Django-1.1.1-py2.5.egg/django/core/servers/basehttp.py", строка 416, в записи self._write (данные) Файл "/usr/lib/python2.5/socket.py", строка 274, в записи self.flush () Файл "/usr/lib/python2.5/socket.py", строка 261, в виде сброса self._sock.sendall (буфер) ошибка: (32, «сломанная труба»)

Я чувствую, что это происходит, потому что я неправильно обновил базу данных, чтобы соответствовать модели ... Но не уверен, что не так, и как это исправить. Тот же код работает локально на экземпляре mysql ... Но у меня есть psql на prod ....

1 Ответ

2 голосов
/ 04 июня 2010

Могу поспорить, что вы используете это: http://djangosnippets.org/snippets/494/ и [как говорит tcarobruce] CountryField - это 2-значный код, который представляет страну - «FR», «GB», «US» и т. Д. и вместо этого вы пытаетесь сохранить полное строковое название страны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...