Django последовательно связывает таблицы через ForeignKey
У меня есть система Django Models, основанная на системе User Following, размещенной здесь.
Как я могу получить все объекты Post, за которыми следит пользователь, имея две модели: Post и UserFollowings, указывающих на модель User через ForeignKey, но модель User не указывает обратно? Мне нужен QuerySet объектов Posts, чтобы позже вызвать сериализатор, в который я добавил модель Posts
Модели:
class User(AbstractUser):
pass
class Post(models.Model):
user = models.ForeignKey("User", on_delete=models.CASCADE, related_name='posts')
body = models.TextField()
def serialize(self):
return {
"id": self.id,
"author": self.user.first_name +" " + self.user.last_name
}
class UserFollowing(models.Model):
user_id = models.ForeignKey("User", on_delete=models.CASCADE,
related_name ='following', null=True)
following_user_id = models.ForeignKey("User", on_delete=models.CASCADE,
related_name='followers', null=True)
Я пытался использовать select_related
, но я думаю, что он не может работать с этими моделями.
В принципе, я ищу что-то вроде этого:
u = User.object.get(id=num)
followers = u.followers
followers_posts = followers.posts.all()
Возвращается последняя строка: 'RelatedManager' object has no attribute 'posts'
Это вернет все сообщения, за которыми следит пользователь
user_instance = User.objects.only('id').get(pk=num)
following_users = UserFollowing.objects.filter(
user_id=user_instance
).values('following_user_id')
posts = Posts.objects.filter(user__in=following_users)