django:无法将数据保存到模型中,psql错误

时间:2010-06-04 05:38:43

标签: django postgresql

我有以下模型描述:

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 |整数| not null default nextval('registration_userprofile_id_seq':: regclass)  关于|文字|不是空的  排名|整数|不是空的  user_id |整数|不是空的  头像|字符变化(100)|  国家|字符变化(2)|  status_id |整数| 索引:     “registration_userprofile_pkey”PRIMARY KEY,btree(id)     “registration_userprofile_user_id_key”UNIQUE,btree(user_id) 外键约束:     “registration_userprofile_status_id_fkey”FOREIGN KEY(status_id)REFERENCES registration_userrank(id)可伸缩的初始值     “registration_userprofile_user_id_fkey”FOREIGN KEY(user_id)REFERENCES auth_user(id)DEINDRABLE INITIALLY DEFERRED

我看到的错误代码是:

  

(,DataError('值类型字符变化太长(2)\ n',),)

追踪(最近一次通话):   文件“/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实例上本地工作...但我在prod上有psql ....

1 个答案:

答案 0 :(得分:2)

我打赌你正在使用这个:http://djangosnippets.org/snippets/494/和[如tcarobruce所说] CountryField是一个代表国家的2-char代码 - 'FR','GB','US'等等你试图存储国家的完整字符串名称。