0

現在、3つのデータストアクラスがあります

ユーザーイベントワークショップ

各ワークショップはイベントを参照し、各イベントには 4 つのワークショップしかありません

ユーザー クラスには、各ユーザーが参加しているワークショップのキーを参照するリスト プロパティがあります。

各ユーザーが 1 つのワークショップ イベントにのみ参加できるようにしたい。

@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に非常に慣れていません。実際、プログラミングは初めてです(ほとんど独学です)

ユーザーがアタッチされているかどうかを確認するために、この方法ですべてのイベントを調べなければならないことを考えると、これは非常にコストがかかると感じます。現在のデータ モデリング構造でこれをより効果的に行う方法はありますか、それとも変更する必要がありますか?

4

1 に答える 1

0

まず、@classmethod を使用します。これがあなたが望むものであることを確認してください (これは、そのコンテキストではかなり奇妙に見えます)。残りの部分: どちらの関数にも、users-object があります。そのユーザーを取得し、その出席属性を調べて、そこにリストされているワークショップのみを取得してみませんか? (ワークショップを取得する必要がある場合は、"def event_attendance" で、ユーザーが空でない出席者のリストを持っているかどうかを確認することでうまくいく可能性があります)

于 2013-01-16T12:30:14.360 に答える