2010-03-09 3 views
0

나는 email 속성에 문자열 속성이있는 db.Model을 가지고 있습니다. 이제 readonly 클래스에 정의 된 유형에 대한 값을 갖게되었습니다. 이것을 데이터 저장소에 저장하면 "Register"대신 문자열이 생기고 BadValueError가 발생합니다. 속성으로 저장하는 대신 문자열로 저장하려면 어떻게해야합니까?GAE db.Model이 문자열 값 대신 속성 가져 오기

class EmailTypes(object): 

    def __init__(self): 
     self.__reg = "Register" 
     self.__news = "NewsLetter" 

    @property 
    def Register(self): 
     return self.__reg 

    @property 
    def NewsLetter(self): 
     return self.__news 

class Email(db.Model): 
    to = db.StringProperty() 
    email_type = db.StringProperty() 


class Example(object) 

    def do_stuff(self): 
     e = Email() 
     e.to = '[email protected]' 
     # This should be saving as 'Register' not a ref to the objects address 
     e.email_type = EmailTypes().Register 

do = Example() 
do.do_stuff() 
+2

게시 한 코드가 올바르게 작동합니다. 'e.email_type = EmailTypes.Register'와 같이 클래스에 대한 호출을하지 않고 실제로 문제를 관찰하고있는 다른 코드에서 뭔가 다른 것을해야합니다. 또는 누가 무엇을 알고 있는지 - 우리는 코드를 디버그 할 수 없습니다. 실제로 깨진 다른 코드와 다른 점을 추측하여 잘 작동합니다. -) –

+0

이 질문을 엉망으로 만든 것 같습니다. 개조 팀이이를 마무리 할 수 ​​있습니까? 감사. – Phil

+0

질문을 편집 할 수 있습니다 - 왜 고쳐야합니까? –

답변

3

이 같이 당신의 EmailTypes 클래스를 변경하면 어떻게됩니까 : 좋아

class EmailTypes(object): 
    Register = 'Register' 
    NewsLetter = 'NewsLetter' 

및 사용 :

e.email_type = EmailTypes.Register 
다음

은 (몸매는 여전 하구나) 코드입니다

간단한 예제가 작동합니까?

+2

Phil의 코드는 해결하려고하는 문제에 너무 복잡해 보입니다. –

+0

@Adam - 단순화 된 버전입니다. 실제 문제는 줄 수 있지만 과도한 것처럼 보입니다. 정말 알고 싶은 것은 속성 개체에 대한 참조 대신 문자열을 반환하는 방법입니다. – Phil

+0

@Will - 그렇습니다.하지만 'Register','NewsLetter' 및 기타 속성은 읽기 전용이 필요합니다. – Phil