2014-05-16 1 views
0

나는 애플 리케이션 엔진에 익숙하지 않고 두 종류의 링크를 둘러싼 내 머리를 맞기 위해 노력하고 있는데, 문서를 읽은 후에도 여전히 내가 생각하는 관계 데이터베이스 모델에서 너무 많이 접근하고있다.링크 종류 Google App Engine (Python을 사용)

난 내가 함께 두 클래스를 연결 어떻게 사용자가 여러 책

class Book(ndb.Model): 
    author = ndb.StringProperty(required=True) 
    booktitle = ndb.StringProperty(required=True) 

을 가질 수 있도록 책 클래스를 갖고 싶어

class UserInformation(ndb.Model): 
    username = ndb.UserProperty() 
    firstname = ndb.StringProperty(required=True) 
    lastname = ndb.StringProperty(required=True) 
    telephone = ndb.IntegerProperty() 
    email = ndb.StringProperty() 

다음 UserInformation 클래스가있는 경우 부모/자식 관계? 그것은 무엇입니까

b = Book(parent=UserInformation, key=’some key’, author=’some author’, booktitle=’a great book’) 

그렇다면 어떻게 추출합니까? 신분증을받을 수 있습니다

Users = UserInformation(UserInformation.username==’some user’).get() 
User_key = Users.key.id() 

하지만 열쇠를 얻을 수없는 것 같습니까? 그것이 소유 관계는 다음 전략은 괜찮 경우

어떤 도움을 기꺼이

+0

사용 ndb.KeyProperty 여러분의 도움과 내가 키 다시 가져올 수 있지만 함께 종류를 연결하기 위해 고군분투하고있는 추가 아이디어 – voscausa

답변

0

을 받았다. 키에 액세스 할 때는 코드에 이미 있습니다.

당신은

User_key = Users.key.id() 

의 핵심은 Users.key

그러나 당신이 책을 사용할 수있는 방법에 대해 생각입니다 사용합니다. 여러 사람이 같은 책을 가지고있는 경우 각 책에 대해 하나의 표준 책 요소를 만드는 것이 좋습니다.

다음 사용자에 다음 중 하나를 수행 할 수 있습니다

  • 가지고 인격이 소유 도서의 모든 키의 목록입니다 KeyProperty을 반복했다. 또는

  • 000 권의 도서가있는 경우 소유 한 엔터티 (사용자를 부모로 함)로 돌아갈 수 있습니다. 이 엔티티에는 표준 책 엔티티를 가리키는 KeyProperty와 제목의 사본이있을 수 있으므로 요약 목록을 가져올 필요가 없습니다.

+0

감사합니다 : B = 도서 (부모 = UserInformation, 키 = userkey를, 저자 = 'some author', booktitle = '훌륭한 책'). 오류가 발생 BadArgumentError : 모델 생성자 지정된 키 = ID =, app =, 네임 스페이스 =, 또는 부모 = 받아 들일 수 있습니까? – Ron

+0

에 대한 – Ron

+0

오류를 다시 읽으십시오. 부모를 사용하면 키 인수를 사용할 수 없다는 것을 알려줍니다. 키가 부모를 어떤 식 으로든 구현하기 때문에 올바른 것입니다. 문자열'id'를 제공하거나 시스템에서 id를 생성하도록해야합니다. 키는 가능한 상위 (ancestor), appid, 네임 스페이스, 종류 및 ID 또는 key_name의 합성입니다. https://developers.google.com/appengine/docs/python/ndb/keyclass에서 키를 다시 읽으시기 바랍니다. –