現在、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に非常に慣れていません。実際、プログラミングは初めてです(ほとんど独学です)
ユーザーがアタッチされているかどうかを確認するために、この方法ですべてのイベントを調べなければならないことを考えると、これは非常にコストがかかると感じます。現在のデータ モデリング構造でこれをより効果的に行う方法はありますか、それとも変更する必要がありますか?