Django和PostgreSQL-值太长,无法更改类型字符(512)

Django和PostgreSQL-值太长,无法更改类型字符(512),django,postgresql,psycopg2,django-database,Django,Postgresql,Psycopg2,Django Database,我正在从测试SQLite数据库迁移到PostgreSQL数据库 我在数据库中插入了一个示例对象,它在SQLite上工作,但在PostgreSQL中给了我一个错误 代码片段是: car = CarItem.objects.create( user = motor_trend, name = 'Camaro 2010', category = cars, condition = 'Used', price = '28,547.00', producti

我正在从测试SQLite数据库迁移到PostgreSQL数据库

我在数据库中插入了一个示例对象,它在SQLite上工作,但在PostgreSQL中给了我一个错误

代码片段是:

car = CarItem.objects.create(
    user = motor_trend,
    name = 'Camaro 2010',
    category = cars,
    condition = 'Used',
    price = '28,547.00',
    production_year = '2010',
    color_interior = 'Black',
    color_exterior = 'Inferno Orange Metallic',
    reference = 'PRC17288',
    location_of_creation = 'Undisclosed',
    location_current = 'Columbus, OH, USA',
    description = 'GORGEOUS ORANGE SS!!',
)
car.save()
我得到一个:

DatabaseError at /create/
value too long for type character varying(512)

Traceback
(...)
    description = 'GORGEOUS ORANGE SS!!',
(...)
“我的模型”的“描述”字段的最大字符长度为512:

description = models.CharField(max_length=512,default='')
但字符串不可能超过512字节

我以前读过关于这个错误的帖子,其中一篇是关于编码的。情况似乎并非如此

我在WebPaction上主持。我用utf-8编码创建了一个数据库,并继续使用syncdb。Syncdb工作得很好,但是现在这个对象插入失败了

有人能提供一些意见吗?谢谢。

在挖掘了一些

字符字段

使用VARCHAR列类型存储的任何字段都有其 如果使用的是unique=True,则最大长度限制为255个字符 在球场上

我的。该字段是否有
unique=True
? 这是Django限制,PostgreSQL不会介意。您可能需要切换到数据类型。用Django的话说


旧观念:

用户
是一种通用的SQL标准。不要将其用作列名

如果你用双引号括起来,你可以用它,但要远离这种愚蠢的行为。只是不要使用保留字作为标识符。永远

还有

user = motor_trend,
name = 'Camaro 2010',
category = cars,

为什么
汽车趋势
汽车
没有像其他值一样被引用,有什么特殊原因吗?外键,如@Ignacio注释?

因为它们是外键。Django的ORM可能正确地引用了字段名。是的,这些是以前定义的Django变量、一些字符串和其他对象。但是,这是否与描述问题有关?是因为我有一个用户字段导致了描述问题吗?@VascoPatricio:没有明显的问题关联,没有。因为没有明显的问题,我在寻找任何可疑的东西。我翻了翻手册,想我现在找到了什么。修改我的答案,看一看。谢谢你的提示。对于长文本字段,使用TextField比使用CharField更有意义。我会试试这个,然后回来汇报。