2013-01-15 18 views
0

目前我有3個數據存儲類數據建模的AppEngine

用戶 事件 車間

每個車間是參照一個事件,每個事件只有四個車間

在用戶類我有一個列出我參考每個用戶所屬的研討會的關鍵字的屬性。

我希望每個用戶只能成爲一個研討會活動的一部分。

@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