Google app engine 数据建模Appengine

Google app engine 数据建模Appengine,google-app-engine,data-modeling,Google App Engine,Data Modeling,目前我有3个数据存储类 使用者 事件 车间 每个研讨会引用一个事件,每个事件只有四个研讨会 在user类中,我有一个list属性,其中我引用了每个用户都参与的研讨会的密钥 我希望每个用户只参加一次研讨会活动 @classmethod def event_attendance(self, user): workshop1 = self.workshops.filter('workshop_number =', 1).get(keys_only = True) users1 = Us

目前我有3个数据存储类

使用者 事件 车间

每个研讨会引用一个事件,每个事件只有四个研讨会

在user类中,我有一个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。确保这是你想要的(在这种情况下看起来很奇怪)。 对于其余部分:在这两个函数中,都有您的users对象。你为什么不去找那个用户, 检查其考勤属性,并仅获取其中列出的车间?
(如果需要获取研讨会,那么“def event_Attention”检查用户是否有一个非空的出席列表可能会起到作用)

我是以一种非常迂回的方式来完成的,结果正如你所说的那样。