如何在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 }} </span>
答案
我认为执行此类操作的最简单,最佳方法是使用Django Friendship:https://pypi.org/project/django-friendship/这是一个令人难以置信的软件包。
但是根据您的设置,我会使用:
Friend.objects.filter(current_user=user).values('users').distinct().count()
以上是关于如何在Django中获取按用户过滤的关注者总数?的主要内容,如果未能解决你的问题,请参考以下文章