首页 > 解决方案 > 在 Django 社交媒体项目中获取用户的关注者列表

问题描述

在我的项目中,我试图显示其他用户的关注者和关注者的列表。现在它只有请求用户的。以下是我的模型和观点:

楷模

class Profile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, related_name='profile', 
                                    on_delete=models.CASCADE)
followers = models.ManyToManyField(User, related_name='following', blank=True)

意见

class FollowersPageView(LoginRequiredMixin, ListView):
    model = Profile
    paginate_by = 20
    template_name = 'users/followers.html'
    context_object_name = 'users'

    def get_queryset(self, **kwargs):
        return self.request.user.profile.followers.all()

class FollowingPageView(LoginRequiredMixin, ListView):
    model = User
    paginate_by = 20
    template_name = 'users/following.html'
    context_object_name = 'profiles'

    def get_queryset(self, **kwargs):
        return self.request.user.following.all()

网址

**(Old url)**
re_path(r'^u/followers$', users_views.FollowersPageView.as_view(), 
       name='view_all_followers'),
**(New url)**
re_path(r'^u/(?P<username>[\w.@+-]+)/followers$', 
       users_views.FollowersPageView.as_view(), name='view_all_followers'),

我试图将 FollowersPageView 的 get_queryset 更改为以下内容,但收到错误消息:

def get_queryset(self, **kwargs):
    user_username = self.kwargs['username']
    user_followers = Profile.objects.filter(followers=user_username)
    return user_followers

谢谢

标签: pythondjangomany-to-many

解决方案


尝试这个:

from django.shortcuts import get_object_or_404
from django.contrib.auth import get_user_model
User = get_user_model()


def get_queryset(self, **kwargs):
    user_username = self.kwargs['username']
    user = get_object_or_404(User, username=user_username)
    user_followers = user.followers.all()
    return user_followers

推荐阅读