【问题标题】:How to fetch users that i follow?如何获取我关注的用户?
【发布时间】:2021-08-19 14:09:25
【问题描述】:

我想创建一个视图集以允许 request.user(经过身份验证的用户)在他们关注的视图中接收用户。但我不知道如何为它制作一个合适的查询集过滤器。

模特(注:作者为后人,简介为后人)

class User(AbstractUser,PermissionsMixin):

    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    email = models.CharField(max_length=255,unique=True)
    username =models.CharField(max_length=40,unique=True,default='undefinedusername')



class UserFollow(models.Model):

    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    author = models.ForeignKey(User,on_delete=models.CASCADE,related_name='following')
    profile = models.ForeignKey(User,on_delete=models.CASCADE,related_name='followers')

查看

class FetchUserViewSet(viewsets.ModelViewSet):
    permission_classes = (IsAuthenticated,)
    queryset = User.objects.all()
    serializer_class = UserSerializer
    filter_backends = [FollowedUserFilterBackend]

过滤器

class FollowedUserFilterBackend(filters.BaseFilterBackend):
    
    def filter_queryset(self, request, queryset, view):
        return queryset.filter(
            ???
        )     

我试过了

following__author = request.user

但它返回的是发出请求的用户,而不是被关注的用户。我该怎么做?

【问题讨论】:

    标签: django


    【解决方案1】:

    你可以过滤:

    return queryset.filter(
        followers__author=request.user
    )

    因此,我们在这里寻找Users 存在UserFollow 记录,其中profile(不是author)指向该用户,author 指向登录用户。

    【讨论】:

      猜你喜欢
      • 2016-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-09
      • 2012-03-10
      • 2018-03-28
      • 1970-01-01
      相关资源
      最近更新 更多