0

我使用inspectdb从现有的PostgreSql数据库创建了一个模型,当我尝试做一个syncdb时,为了生成授权表,它会生成以下错误:

CommandError: One or more models did not validate:
db.t1: "ip": CharFields require a "max_length" attribute that is a positive integer.

所以我把它放到max_length=255所有的 CharFields 上,但它也不起作用。Django 版本是 1.5.1。有人知道如何解决这个问题吗?

4

1 回答 1

1

当前inspectdbmax_length为没有指定长度的 PostgreSQL 字符字段设置。仅供参考,引用 postgreSQL 文档:

符号 varchar(n) 和 char(n) 分别是 character varying(n) 和 character(n) 的别名。没有长度说明符的字符等效于字符(1)。如果在没有长度说明符的情况下使用字符变化,则该类型接受任何大小的字符串。后者是 PostgreSQL 扩展。

但是,Django不允许max_length在没有参数的情况下定义 CharFields 。有一张开放的票

这个 django片段提供了一个CharField没有长度限制的自定义 - 应该通过所有 django 的验证。

此外,切换到TextField也可能有所帮助。

希望有帮助。

于 2013-05-20T21:07:44.250 回答