GAE db.Model은 튜플 목록을 저장할 수 없습니다. 따라서 목록을 json.dumps 문자열로 저장하고 json.loads 문자열을 엔터티에서 다시 가져올 때 필요합니다. 나는 이것을 자동화하고 싶다. 여기 내 시도이다 : 나는 A, B를 설정하려고하면GAE db.Model python 2.7에서 __setattr__를 오버라이드합니다.
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)
, C는 내가 얻을 개체의 속성 :
BadValueError: Property C must be a str or unicode instance, not a list
당신이 단지 BLOB 속성에 전체 목록을 붙이지 않는 이유는 어떤 이유가 있나요 . 훨씬 간단한 운동 일 것입니다. –
모델의 getattr/setattr을 재정의하는 것은 이것을 수행하는 방법이 아닙니다. 이것이 사용자 정의 속성 클래스의 용도입니다. 또는 Sologoub가 제안한대로 이미 NDB를 사용합니다. –