Pinterest のデータ モデルに非常によく似た Django の次の (簡略化された) モデルがあります。
class UserProfile(models.Model):
user = models.OneToOneField(User)
class Collection(models.Model):
owner = models.ForeignKey(User,related_name='collection_owner')
followers = models.ManyToManyField(User, related_name='collection_followers', null=True, blank=True, default = None)
class Item(models.Model):
collections = models.ManyToManyField(Collection,blank=True,null=True)
User モデル、1 対 1 でユーザーをマッピングする UserProfile モデル、所有者とフォロワーを持つ Collection モデル、および複数のコレクションの一部になることができるアイテムがあります。Django で次のクエリを実行する方法を決定するのに苦労しています。
特定のユーザーのすべてのフォロワーを取得します。フォロワーの定義は、その特定のユーザーが所有する少なくとも 1 つのコレクションをフォローするものです。
ユーザーがフォローしているコレクションの個別のアイテムをすべて取得します。
これらを 1 つのクエリで実行できるかどうか、または複数のクエリに分割する必要があるかどうかはわかりません。最善のアプローチは何でしょうか?トレードオフはありますか?
助けてくれてありがとう。