筛选Django Queryset以仅返回登录用户的追随者

筛选Django Queryset以仅返回登录用户的追随者,django,django-rest-framework,django-views,Django,Django Rest Framework,Django Views,我正在尝试使用Django Rest框架过滤谁跟随登录用户/谁跟随登录用户。但是,我要返回的似乎是被任何用户跟踪或正在跟踪任何用户的所有用户,它不是特定于登录用户(,) 我通过AJAX调用与登录用户的pk一起发出GET请求,但似乎无法专门针对该请求进行过滤。如果有任何帮助,我将不胜感激 这是我的模型: class UserConnections(models.Model): follower = models.ForeignKey(User, related_name="fol

我正在尝试使用Django Rest框架过滤谁跟随登录用户/谁跟随登录用户。但是,我要返回的似乎是被任何用户跟踪或正在跟踪任何用户的所有用户,它不是特定于登录用户(,)

我通过AJAX调用与登录用户的pk一起发出GET请求,但似乎无法专门针对该请求进行过滤。如果有任何帮助,我将不胜感激

这是我的模型:

class UserConnections(models.Model):
    follower = models.ForeignKey(User, related_name="following", on_delete=models.CASCADE)
    followed = models.ForeignKey(User, related_name="followers", on_delete=models.CASCADE)
以下是相关的序列化程序:

class UserConnectionListSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserConnections
        fields = ['follower','followed']

class UserConnectionSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserConnections
        fields = '__all__'
        depth = 2
这是views.py

# gets list of who logged in user is following
class FollowingViewSet(viewsets.ModelViewSet):
    serializer_class = serializers.UserConnectionListSerializer
    queryset = UserConnections.objects.all()

    def get_serializer_class(self):
        if self.request.method == 'GET':
            return serializers.UserConnectionSerializer

        return self.serializer_class

        def get_followers(request):
            if request.method == "GET":
                user_id = self.request.GET.get('current_user_id', None)
                return UserConnections.objects.filter(follower__id=user_id)


# gets list of followers who follow logged-in user
class FollowerViewSet(viewsets.ModelViewSet):
    serializer_class = serializers.UserConnectionListSerializer
    queryset = UserConnections.objects.all()

    def get_serializer_class(self):
        if self.request.method == 'GET':
            return serializers.UserConnectionSerializer

        return self.serializer_class

        def get_followers(request):
            if request.method == "GET":
                user_id = self.request.GET.get('current_user_id', None)
                return UserConnections.objects.filter(followed__id=user_id)

您需要覆盖
get\u queryset

在视图集(viewsets.ModelViewSet)之后分类:
...
#缩进处于“class”级别
def get_queryset(自我):
user\u id=self.request.GET.GET('current\u user\u id',None)
返回UserConnections.objects.filter(follower\u id=user\u id)
对于
以下视图集

class FollowerViewSet(viewset.ModelViewSet):
...
def get_queryset(自我):
user\u id=self.request.GET.GET('current\u user\u id',None)
返回UserConnections.objects.filter(后面的\u id=user\u id)

为什么定义了一个
get\u followers
方法而不在任何地方使用它?为了实现您的目标,请将
get\u followers
重命名为
get\u queryset
嘿,谢谢您的回复,我尝试了你的建议,但结果没有改变。很遗憾,缩进正确吗?缩进如上图所示。谢谢你,我对这个解决方案所做的唯一更改是将
def get_queryset(request)
更改为
def get_queryset(self)
,然后它就像一个魔咒一样工作了@维格德夫啊,对不起,我的孩子,谢谢你的帮助!