私が構築しているサイトは、ユーザーが「投稿」を作成できるようにし、ユーザーをフォローするという Twitter のような概念を持っています。特定のユーザーについて、フォローしているユーザーのすべての投稿を表示したいと思います。
これが私の単純化されたモデルです:
class User
# a standard django.contrib.auth user model
class UserProfile(models.Model):
# my AUTH_PROFILE_MODULE for django-profiles
user = models.ForeignKey(User, unique=True)
following = models.ManyToManyField('self', symmetrical=False, related_name="followed_by")
class Posts(models.Model):
user = models.ForeignKey(User)
post = models.TextField()
質問:特定のユーザーがフォローしているユーザーから、すべての Post オブジェクトのクエリセットを作成するにはどうすればよいですか?
Posts との ForeignKey 関係を持つモデルではなく、UserProfile に "follow" 関係を作成することで、より複雑になったと思います。
アップデート!答えは次のとおりです。
Posts.objects.filter(user__userprofile__in=UserProfile.objects.get(user=your_user_object).following.all())