Django 跨模型过滤

Django Filtering across models

我需要根据用户是否关注 post 的作者来过滤时间线 post 条目(就​​像 FB 一样)。如何使用过滤器实现此目的

models.py

class Timeline_Post(models.Model):
    author = models.ForeignKey(User, on_delete= models.CASCADE,related_name='blog_posts')
    text = models.TextField()

class Contact(models.Model):
    user_from = models.ForeignKey(settings.AUTH_USER_MODEL,
                                  related_name='rel_from_set',
                                  on_delete=models.CASCADE)
    user_to = models.ForeignKey(settings.AUTH_USER_MODEL,
                                related_name='rel_to_set',
                                on_delete=models.CASCADE)
    created = models.DateTimeField(auto_now_add=True,
                                   db_index=True)

    class Meta:
        ordering = ('-created',)

    def __str__(self):
        return '{} follows {}'.format(self.user_from, self.user_to)


User.add_to_class('following',
                  models.ManyToManyField('self',
                                         through=Contact,
                                         related_name='followers',
                                         symmetrical=False))

views.py

class TimelinePostList(generics.ListCreateAPIView):
    serializer_class = TimelinePostSerializer
    def get_queryset(self):
        queryset = Timeline_Post.objects.all()
        request_queries = self.request.query_params
        if(request_queries):
            user = request_queries.get('user', None)
            return Timeline_Post.objects.filter(author = user)
        return Timeline_Post.objects.filter( ???   )

您可以过滤:

Timeline_Post.objects.filter(
    <b>author__followers=<i>user</i></b>
)

user 应该关注 Timeline_Postauthor 的用户,所以可能 self.request.user .