2016-07-21 4 views
1

私はDjangoを学んでおり、モデルにjsonフィールドを作成することで不満を抱いていました。モデルにjsonフィールドを作成しようとしましたが、エラーが発生しました。 'module'オブジェクトには 'JSONField'という属性はありません。私のクラスはmodels.pyにあります:Djano JSONフィールド。 'module'オブジェクトには 'JSONField'という属性はありません

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型のカラムがあります。モデルクラスではどうしたらいいですか? ありがとうございました!

答えて

3

モデルにはJSONFieldはありません。しかし、DjangoモデルでJSONFieldを使用するのに便利なjsonfieldパッケージがあります。パッケージをインストールするには、実行します。

pip install jsonfield 

は一度インストール、実行します。DjangoのJSONFieldは、 `PostgreSQLでのみ存在jsonb`タイプ> = 9.4を使用しているため、

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') 
+1

これは動作します。しかし、PostgresロックされたDjangoのJSONFieldには、jsonデータのインデックスやクエリのような素晴らしいものがあります。 –

+0

@Mikhail Pyrevので、jsonfieldモデルを使用する代わりにpostgresqlをアップグレードする必要がありますか?ありがとう! – Gary

+1

はい、コア機能はサードパーティ製のlibより常に優れています。 :) –

5

modelsモジュールにはJSONFieldありません、以下を行う必要があります。

from django.contrib.postgres.fields import JSONField 

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

DjangoのドキュメントについてJSONFieldを。

+0

これは、OPの場合には、とにかく動作しません。 。 –

+0

@Shang wang、私はNameErrorを持っています:名前 'JSONField'は定義されていません。 – Gary

+0

@Mikhail Pyrev、私はPostgreSQL 9.4にアップグレードすべきだと思います。 – Gary

関連する問題