Python django rest框架中的多对多过滤器

Python django rest框架中的多对多过滤器,python,django,python-3.x,django-rest-framework,postman,Python,Django,Python 3.x,Django Rest Framework,Postman,我对筛选和检索多对多相关的数据有一个问题 models.py class Team(models.Model): name = models.CharField(blank=True, unique=True, max_length=100) players = models.ManyToManyField(User, blank=True, related_name='players') 赛里泽斯酒店 class MyTeamListSerializer(ModelSeria

我对筛选和检索多对多相关的数据有一个问题

models.py

class Team(models.Model):
    name = models.CharField(blank=True, unique=True, max_length=100)
    players = models.ManyToManyField(User, blank=True, related_name='players')
赛里泽斯酒店

class MyTeamListSerializer(ModelSerializer):

    class Meta:
        model = Team
        fields = ['name']
views.py

class MyTeamListAPIView(ListAPIView):
    queryset = Team.objects.all()
    serializer_class = MyTeamListSerializer
    permission_classes = [IsOwnerOrReadOnly]
    pagination_class = ProfileLimitPagination
    filter_backends = (filters.DjangoFilterBackend,)
    filter_fields = ('players')
    filter_class = TeamFilter
过滤器.py

class TeamFilter(django_filters.FilterSet):
    teams = django_filters.CharFilter(
        players='players__id',
        lookup_type='contains',
    )

    class Meta:
        model = Team
        fields = ('players', 'teams',)
现在,我要做的是,检索我的队员名单

所以我想请求我的团队获得我团队的响应列表

我不知道到底是什么问题,但我是django rest框架的新手

所以,请任何人都有解决方案,请在我的情况下帮助我,或者如果你有另一个解决方案来做我想做的事


如果您需要获取特定球员的球队列表,请使用
精确的
查找,而不是
包含的

class TeamFilter(django_filters.FilterSet):
    teams = django_filters.NumberFilter(
        field_name='players_id',
        lookup_type='exact',
    )

    class Meta:
        model = Team
        fields = ('players', 'teams',)
还可以使用
字段名称
作为参数,而不是
玩家

如果只想显示当前用户的团队,最好使用视图的
get\u queryset
方法:

class MyTeamListAPIView(ListAPIView):
    serializer_class = MyTeamListSerializer
    permission_classes = [IsOwnerOrReadOnly]
    pagination_class = ProfileLimitPagination
    filter_backends = (filters.DjangoFilterBackend,)
    filter_fields = ('players')
    filter_class = TeamFilter

    def get_queryset(self):
        return Team.objects.filter(players=self.request.user)

感谢您的快速回复,但我问自己是否希望获得特定玩家的团队(请求者)。我只需要与请求用户相关的团队,用其他语言,只需要我的团队。第一个问题,你的代码服务于这一点?第二,如何在过滤器中获取requset.user?许多的thanks@hishamDigital在这种情况下,最好覆盖视图的
get\u queryset
方法。检查更新的答案。非常感谢@neverwanner更新的答案对我很好。真的非常感谢btw
return Team.objects.filter(players\u-exact=self.request.user)
我从
players\u-exact
中删除了
exact
以确保工作无误再次感谢