0
Google AppsエンジンのデータストアでJsonPropertyを使用しようとしています。このコードを使用してGoogle App Engineのカスタムプロパティ。 Make_value_from_datastoreに送信された値が保存されたタイプではありません
は
class JsonProperty(SerialProperty):
"""Stores a dictionary automatically encoding to JSON on set and decoding
on get.
"""
data_type = dict
def __init__(self, *args, **kwds):
self._require_parameter(kwds, 'indexed', False)
kwds['indexed'] = True
super(JsonProperty, self).__init__(*args, **kwds)
def get_value_for_datastore(self, model_instance):
"""Encodes the value to JSON."""
value = super(JsonProperty, self).get_value_for_datastore(
model_instance)
if value is not None:
return db.Text(json.dumps(value))
else:
return db.Text("{}")
def make_value_from_datastore(self, value):
value=super(JsonProperty, self).make_value_from_datastore(value)
logging.error(value)
"""Decodes the value from JSON."""
if value is not None:
return json.loads(value)
def validate(self, value):
if value is not None and not isinstance(value, (dict, list, tuple)):
raise db.BadValueError('Property %s must be a dict, list or '
'tuple.' % self.name)
(インデントは右の私のコンピュータ上にある)しかし、私は代わりにタイプdb.Textであることの、make_value_from_datastoreで「値」を取得するとき、それはタイプJsonPropertyです。
データストアの文字列が表示され、正しく保存されています。
それがロードされるとJSON「は、文字列をまたはバッファ」欲しい
を私は理解していない、と私のコードと、いくつかの間に違いを見つけることができないので、それは、json.loads(値)にチョークインターネット上の例です。これらはすべて、「値」の値がデータストアに保存された生の型であることを示しています。
NDBに切り替えることはできますか? JsonPropertyが動作しているためです。 (恥知らずなプラグ... :-) –