0
GAE db.Model無法存儲元組列表。因此,我需要將列表保存爲json.dumps字符串,並且在將該列表從實體中拉出時,json.loads該字符串。我想自動執行此操作。這裏是我的嘗試:覆蓋GAE上的__setattr__ db.Model python 2.7
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
有什麼理由你不只是堅持了整個列表變成一個blob屬性。這將是一個更簡單的練習。 – 2012-07-10 04:14:51
覆蓋模型的getattr/setattr不是實現此目的的方法 - 這是自定義屬性類的用途。或者,按照Sologoub的建議,使用已有的NDB。 – 2012-07-10 09:07:38