如何在Django中获取按用户过滤的关注者总数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Django中获取按用户过滤的关注者总数?相关的知识,希望对你有一定的参考价值。

我在Django中有一个ManyToManyfield,我试图获取关注特定用户的用户总数。有人知道怎么做吗?我已经在views.py中尝试过此代码“帐户”上下文,但无法正常工作。谢谢!

views.py

class UserPostListView(ListView):
    model = Post
    template_name = 'blog/user_posts.html'
    context_object_name='posts'
    paginate_by = 15

    def get_queryset(self):
        user = get_object_or_404(User, username=self.kwargs.get('username'))
        return Post.objects.filter(author=user).order_by('-date_posted')

    def get_context_data(self, **kwargs):
        context = super(UserPostListView, self).get_context_data(**kwargs)
        user = get_object_or_404(User, username=self.kwargs.get('username'))
        context['focount'] = Friend.objects.filter(current_user=self.request.user).count()
        return context

Models.py

class Friend(models.Model):
    users = models.ManyToManyField(User)
    current_user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='owner', null=True)

    @classmethod
    def make_friend(cls, current_user, new_friend):
        friend, created = cls.objects.get_or_create(current_user=current_user)
        friend.users.add(new_friend)

    @classmethod
    def lose_friend(cls, current_user, new_friend):
        friend, created = cls.objects.get_or_create(current_user=current_user)
        friend.users.remove(new_friend)

user_posts.html

<div class="followers-col-st"><span class="follower-color">{{ focount }}&nbsp;</span>
答案

我认为执行此类操作的最简单,最佳方法是使用Django Friendship:https://pypi.org/project/django-friendship/这是一个令人难以置信的软件包。

但是根据您的设置,我会使用:

Friend.objects.filter(current_user=user).values('users').distinct().count()

以上是关于如何在Django中获取按用户过滤的关注者总数?的主要内容,如果未能解决你的问题,请参考以下文章

Django 模型:用户和关注者的数据库设计

如何按城市获取 Spotify 艺术家听众和关注者

如何在 django 中按日期范围过滤记录?

在 Django admin 中,如何按组过滤用户?

Facebook API:如何在facebook中获取登录用户的关注者列表[重复]

关注 AppEngine 上的数据存储模型结构 - 按日期排序关注者