GAE db.Model はタプルのリストを格納できません。したがって、リストを json.dumps 文字列として保存する必要があり、リストをエンティティから引き戻すときに json.loads が文字列をロードします。これを自動化したい。これが私の試みです:
class example(db.Model):
someAttr = db.StringListProperty()
A = db.StringProperty()
B = db.StringProperty()
C = db.StringProperty()
def __setattr__(self, name, value):
#convert json to string for storage
if name in ("A", "B", "C"):
value = json.dumps(value)
#call default set method
return super(Quote, self).__setattr__(name, value)
def __getattribute__(self, name):
#convert string to json for retrieval
if name in ("A", "B", "C"):
val = super(Quote, self).__getattribute__(name)
return json.loads(val)
else:
# default get behavior
return super(Quote, self).__getattribute__(name)
エンティティの A、B、C 属性を設定しようとすると、次のようになります。
BadValueError: Property C must be a str or unicode instance, not a list