2013-01-15 2 views
0

현재 내가 가지고 3 개 데이터 저장소 클래스 각각의 워크샵이 이벤트에 참조 및 각 이벤트는 네 개의 워크샵 사용자 클래스에서 데이터 모델링 AppEngine에

나는이를 가지고있다

사용자 이벤트 워크샵 list 속성을 사용하여 각 사용자가 속한 워크샵의 키를 참조합니다.

나는 각 사용자가 하나의 워크샵 이벤트에만 참여하기를 원합니다.

@classmethod 
def event_attendance(self, user): 
    workshop1 = self.workshops.filter('workshop_number =', 1).get(keys_only = True) 
    users1 = User.all().filter('attendance =', workshop1.key()).fetch(149) 
    if user in users1: 
     return True 
    else: 
     workshop2 = self.workshops.filter('workshop_number =', 2).get(keys_only = True) 
     users2 = User.all().filter('attendance =', workshop2.key()).fetch(149) 
     if user in users2: 
      return True 
     else: 
      workshop3 = self.workshops.filter('workshop_number =', 3).get(keys_only = True) 
      users3 = User.all().filter('attendance =', workshop3.key()).fetch(149) 
      if user in users3: 
       return True 
      else: 
       workshop4 = self.workshops.filter('workshop_number =', 4).get(keys_only = True) 
       users4 = User.all().filter('attendance =', workshop4.key()).fetch(149) 
       if user in users4: 
        return True 
       else: 
        return False 

여기에서 나는 사용자가 작업장 중 하나에 등록하고 그들이하는 일을 찾기 위해이 이벤트에 워크숍에 등록 된 경우 방법은 아래에 찾아와 있었다됩니다 어떠했는지를 볼 이벤트를 통해 이동합니다.

@classmethod 
def My_Event(self, user): 
    workshop1 = self.workshops.filter('workshop_number =', 1).get(keys_only = True) 
    users1 = User.all().filter('attendance =', workshop1.key()).fetch(149) 
    if user in users1: 
     return workshop1 
    else: 
     workshop2 = self.workshops.filter('workshop_number =', 2).get(keys_only = True) 
     users2 = User.all().filter('attendance =', workshop2.key()).fetch(149) 
     if user in users2: 
      return workshop2 
     else: 
      workshop3 = self.workshops.filter('workshop_number =', 3).get(keys_only = True) 
      users3 = User.all().filter('attendance =', workshop3.key()).fetch(149) 
      if user in users3: 
       return workshop3 
      else: 
       workshop4 = self.workshops.filter('workshop_number =', 4).get(keys_only = True) 
       users4 = User.all().filter('attendance =', workshop4.key()).fetch(149) 
       if user in users4: 
        return workshop4 

나는이 매우 비싼 느낌이 나는 사용자가 연결되어 있는지 확인하기 위해이 방법으로 모든 이벤트를 거쳐야합니다 고려 프로그램 (주로 독학)

새로운 사실 ​​AppEngine에 매우 새로운 오전 , 내 현재 데이터 모델링 구조로이 작업을 효과적으로 수행하는 방법이 있습니까? 아니면 변경해야합니까 ???

답변

0

먼저 @classmethod를 사용합니다. 이것이 당신이 원하는 것이라는 것을 확인하십시오 (이것은이 상황에서 꽤 이상하게 보입니다). 나머지 : 두 가지 기능 모두에서 사용자 개체가 있습니다. 왜 그 사용자를 가져 오지 않고 출석 속성을 검사하고 거기에 나열된 워크샵 만 가져 오지 않습니까? (워크샵을 가져 오는 것이 전혀 필요하지 않은 경우 "def event_attendance"에 대해 사용자가 비어 있지 않은 출석 목록을 가지고 있는지 확인)

+0

나는 매우 둥근 방식으로이 작업을 수행했습니다. 당신이 말한대로. – Jesse