У меня есть следующая описанная модель:
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 ....