我有以下模型描述:
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 ....
答案 0 :(得分:2)
我打赌你正在使用这个:http://djangosnippets.org/snippets/494/和[如tcarobruce所说] CountryField是一个代表国家的2-char代码 - 'FR','GB','US'等等你试图存储国家的完整字符串名称。