1

我的网站上有一个朋友功能,我希望主屏幕是当前用户关注的用户过滤的帖子。

这是相关模型

class UserProfileInfo(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE,max_length=30)
    friends = models.ManyToManyField(User,blank=True,related_name='user_connections')

以及相关观点

class PostViewList(HitCountDetailView,SelectRelatedMixin,ListView):
    model = Post    
    count_hit = True
    template_name = 'mainapp/list.html'
    select_related = ("user","group",)
    paginate_by = 5
    context_object_name = 'posts'
    queryset = models.Post.objects.all()

    def get_queryset(self):
        # return Post.objects.filter(author__friends__friend__id=self.request.user.id)
        qs = super().get_queryset()
        select_related = ("user","group",)
        # user = self.user
        return qs.filter(Q(friend__author=self.kwargs['post.author']))

*请注意,select_related由于另一个不相关的功能,其中的组在那里

如您所见,我试图过滤掉帖子,但它不起作用。

我不知道我错过了什么/做错了什么。

4

1 回答 1

2

假设你author在模型中有一个属性Post,它是外键的User,你可以使用filter(author__user_connections__in=[self.request.user])
所以基本上这个过滤器说:“寻找他们的作者self.request.user在他们的相关朋友对象中拥有的帖子”

于 2020-03-30T09:08:41.000 回答