如何从django模型中为模型字段定义json类型

时间:2014-09-17 07:16:40

标签: python json django postgresql

任何人都可以告诉我如何将json数据类型定义到模型中的特定字段。

我试过这个

from django.db import models
import jsonfield

class Test(models.Model):
    data = jsonfield.JSONField()

但是当我说python manage.py sqlall xyz时 它将数据字段作为文本

BEGIN;
CREATE TABLE "xyz_test" (
   "data" text NOT NULL
)
; 

我仍然尝试将json数据插入到该字段中,但它给出的错误为:

ERROR:  value too long for type character varying(15)
有人请帮忙。在此先感谢。

3 个答案:

答案 0 :(得分:3)

在后台JSONField actually is a TextField中,sqlall的输出不是问题,这是预期的行为。

此外,我重新创建了你的模型并且它工作正常,无论是作为字符串输入值还是作为python字典,都没有任何字符限制。所以我最好猜测这个问题是一个完全不相关的领域 有15个字符限制。

答案 1 :(得分:1)

Django已为某些数据库添加了JSONField数据类型,以改进对JSON的处理。这篇文章提供了更多信息:Django 1.9 - JSONField in Models

答案 2 :(得分:0)

您可以尝试以下方法:

from django.contrib.postgres.fields import JSONField

class Test(models.Model):
    data = models.JSONField()