2017-07-22 8 views
0

私はJSONデータでいくつかのデータを取得できない理由を理解しています。私はJSONFieldを使ってDjangoを使っています。それらをフェッチした後、いくつかの特定のデータを変更したいと思います。ここで私が書いたものだ:エラーが1ありますしながら、何の属性colorはありませんと言う理由JSONでネストした辞書をフェッチする方法は?

{'color': 'red', 'size': '20x20', 'good_till': '01.08.2017'} 

は、だから私は理解していない:私はvalueを印刷するとき

for apple in Apples.objects.filter(json__contains=[{'provenance': 'Spain'}]): 
    for ap in apple.json: 
     for key, value in ap.items(): 
      print(value.color) 

AttributeError: 'dict' object has no attribute 'color'

が、私はこのような何かを持っています?私は間違って何をしていますか?

+2

'value.color'の代わりに' value ['color'] 'を使用しますか? – Christoph

+0

@Christophはいこれは、他の投稿でこの情報を見つけることができなかった理由がわかりません – Lindow

答えて

1

は、次のものが必要です。

print (value.get('color', '')) 

色がキーではなく属性であるため、

+0

'value ['color'] = 'yellow''に新しい色を割り当てることは可能ですが、それは'value.get( 'color'、 '')=" green "'でこれを行う方法はありますか? – Lindow

+0

次のような場合があります: 'value.update({" color ":" green "})' –

1

ねえので、このような「プリント(value.color)」として、ドット表記を使用しているそれを行うだろうかjinjaを使っている物のhtml側ですが、キーの値にアクセスするためのPythonファイルでは大括弧を使います。これが役に立ちますようにお願いします。

値['色']が赤くなります。 それを変更するには 値['color'] = blueはそれを に変更し、htmlで{{value.color}}に変更します。 これは役に立ちます。

関連する問題