メンバーとイベントの2つのモデルがあります。メンバーは多くのイベントに参加でき、イベントには多くの参加者がいます。私はこのように考えます:
class Members(ndb.model):
event = ndb.KeyProperty(repeated=True)
class Events(ndb.model):
member = ndb.KeyProperty(repeated=True)
多対多の関係を築くための最良の方法は何ですか?
メンバーとイベントの2つのモデルがあります。メンバーは多くのイベントに参加でき、イベントには多くの参加者がいます。私はこのように考えます:
class Members(ndb.model):
event = ndb.KeyProperty(repeated=True)
class Events(ndb.model):
member = ndb.KeyProperty(repeated=True)
多対多の関係を築くための最良の方法は何ですか?
この場合、一方のモデルにもう一方のモデルを指すキーの配列/リストが必要だと思います。配列/リストの長さには制限があるため(現在最大は5000です)、メンバーモデルがイベントモデルを指すようにする必要があります(メンバーはおそらく多くのイベントに参加しないと想定しています( 5000)ですが、イベントには多くの(5000人以上の)メンバーがいます)。ここで、出席者のリストが必要な場合は、メンバーモデルでイベントキーを照会するだけです。人数だけが必要な場合は、キーのみのクエリを実行できます。これにより、コストを節約できます。
何らかの理由で両方のケースを5000以上にする必要がある場合は、メンバーキーとイベントキーを含む別の(出席者)モデルを作成し、各イベントのゲストごとにこの出席者モデルを作成できます。ゲストのリストを取得するには、このモデルに特定のイベントを照会するだけです。メンバーのイベントのリストが必要な場合は、その逆を行います。これは上記よりもはるかに多くの作業ではないので、5000が制限要因でなくても、それを実行する方法になる可能性があります。