Djano JSON领域。 '模块'对象没有属性' JSONField'

时间:2016-07-21 20:31:15

标签: python django

我正在学习Django,并且在模型中创建一个json字段感到很沮丧。我试图在我的模型中创建一个json字段,但是出现了错误:' module'对象没有属性' JSONField'。这是我在models.py中的类:

class Question(models.Model):
    question_text = models.JSONField(max_length=200)
    pub_date = models.DateTimeField('date published')

我正在使用django 1.9.8和postgresql 9.2.13。 我需要在postgresql db中创建的表有一个JSON类型的列。我怎么能在模型类中做到这一点? 谢谢!

4 个答案:

答案 0 :(得分:9)

JSONField模块中没有models,您需要:

from django.contrib.postgres.fields import JSONField

class Question(models.Model):
    question_text = JSONField()

关于JSONField的Django doc。

答案 1 :(得分:6)

Django 3.1更新

从Django 3.1开始,JSONField现在可用于所有数据库后端。

https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.JSONField

答案 2 :(得分:5)

模型中没有JSONField。但是有一个方便的jsonfield包可以在Django模型中使用JSONField。要安装软件包,请执行以下操作:

pip install jsonfield

安装完成后,执行:

from jsonfield import JSONField
from django.db import models

class Question(models.Model):
question_text = JSONField(max_length=200)
pub_date = models.DateTimeField('date published')

答案 3 :(得分:0)

更改import语句应该可以解决您的问题(这对我有所帮助):

from django.contrib.postgres.fields.jsonb import JSONField

因此JSONField现在位于jsonb模块中。