python - 在 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
谢谢
解决方案
尝试这个:
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
推荐阅读
- python - 在python中用for循环改变二维列表
- uwp - 如何在 UWP 中包装 ToggleSwitch 的 OffContent/OnContent?
- python - 在存储过程中使用输入参数作为关键字
- java - 我们何时以及为什么需要 ApplicationRunner 和 Runner 接口?
- python - 应用函数 Pandas ?? 执行
- xslt - xsl:message terminate 由变量定义的属性(类似设置)
- android - 回收者视图发布项目删除,已删除与其他视图重叠的视图
- python - 在 Python Flask 服务器中使用 RxPY 处理基于推送的事件的 websocket 断开连接
- ios - 在 Swift 中通过各种图像制作动画 - 使用自定义的加载视图
- flutter - 如何在 GridView 颤振中实现自动列