CharField在数据库中显示为IntegerField

时间:2014-10-14 10:04:12

标签: python django postgresql

我们正在制作电影数据库应用程序并使用 Django 1.7 PostgreSQL

这是我们models.py文件的样子:

class Movies(models.Model):
    name = models.CharField(max_length=50)
    lang = models.ForeignKey(Language, null=True)
    genre = models.ForeignKey(Genre, null=True)
    cast = ArrayField(models.CharField(max_length=50))

为了适应我们使用的ArrayField

from djorm_pgarray.fields import ArrayField
from djorm_expressions.models import ExpressionManager

在模型中。

以下是为cast生成的SQL:

ALTER TABLE movies_movies ADD COLUMN "cast" integer[];

即使我们指定了cast,也知道CharField列为什么会变成整数?

1 个答案:

答案 0 :(得分:0)

根据djorm_pgarray docs,您可以按如下方式创建文本数组:

from djorm_pgarray.fields import TextArrayField

class Movies(models.Model):
    # ...
    cast = TextArrayField(dimension=1)

或者,根据this文章:

from djorm_pgarray.fields import ArrayField

class Movies(models.Model):
    # ...
    cast = ArrayField(dbtype="text", dimension=1)

关于max_length的文本字段(varchar和text实际上与postgres相同):不确定,可以在postgres中的数组中定义它。