Skip to content

request not being passed to filterclass #203

Closed
@hyusetiawan

Description

@hyusetiawan

given the following code:

class ManageQuery(AbstractType):
    group_requests = DjangoFilterConnectionField(RequestNode, filterset_class=RequestManageFilter)

and the filterset class:

class RequestManageFilter(FilterSet):
    # Do case-insensitive lookups on 'name'

    @property
    def qs(self):
        user = getattr(self.request, 'user', None)
        print('User: ', user)
        parent = super(RequestManageFilter, self).qs
        return parent # .filter(group=self.request.user.main_author)

    class Meta:
        model = Request
        exclude = set()

the instance property self.request is always None, because when it's instantiated, graphene-django does not pass the context as request, shown here in fields.py's connection_resolver

   @classmethod
    def connection_resolver(cls, resolver, connection, default_manager, max_limit,
                            enforce_first_or_last, filterset_class, filtering_args,
                            root, args, context, info):
        filter_kwargs = {k: v for k, v in args.items() if k in filtering_args}

        qs = filterset_class(
            data=filter_kwargs,
            queryset=default_manager.get_queryset(),
        ).qs

passing request=context would make it work:

        qs = filterset_class(
            data=filter_kwargs,
            queryset=default_manager.get_queryset(),
            request=context,
        ).qs

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions