0

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 
+0

당신이 단지 BLOB 속성에 전체 목록을 붙이지 않는 이유는 어떤 이유가 있나요 . 훨씬 간단한 운동 일 것입니다. –

+1

모델의 getattr/setattr을 재정의하는 것은 이것을 수행하는 방법이 아닙니다. 이것이 사용자 정의 속성 클래스의 용도입니다. 또는 Sologoub가 제안한대로 이미 NDB를 사용합니다. –

답변

관련 문제