谷歌应用引擎-数据建模应用引擎



目前我有3个数据存储类

用户事件车间

每个workshop引用一个Event,每个Event只有四个workshop

在用户类中,我有一个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很陌生实际上对编程很陌生(大部分是自学的)

考虑到我必须以这种方式查看每个事件以查看用户是否附加,这感觉非常昂贵,是否有一种方法可以更有效地使用我当前的数据建模结构,或者我应该改变它?

首先,使用@classmethod。确保这是你想要的(这在上下文中看起来很奇怪)。其余部分:在这两个函数中,都有用户对象。为什么不取回那个用户,检查它的考勤属性,只获取那里列出的车间?(如果需要获取研讨会,对于"def event_attendance",检查用户是否有一个非空的出席列表可能会起作用)

最新更新