如何解析石墨烯DjangoFilterConnectionField?

问题描述 投票:0回答:1

我的石墨烯 API 列表中有以下查询,

class Query(UserQuery, graphene.ObjectType):
    all_users = DjangoFilterConnectionField(
        UserType, filterset_class=UserFilter)
    all_leagues = DjangoFilterConnectionField(
        LeagueType, filterset_class=LeagueFilter)

对于这些连接字段,我需要应用 @login_required 样式权限。

我发现我需要解析这些 api 端点才能应用它们。

@login_required
def resolve_all_users(self, info):
    #code

但是我不知道上面的方法返回什么? 有一个名为“用户”的模型,理想情况下需要返回该模型中的所有记录。

但是当我对第一个、最后一个、之前、之后应用过滤器时,出现以下错误,

"message": "Query.resolve_all_users() got an unexpected keyword argument 'first'"

请指教。

django graphene-python
1个回答
0
投票

下面的代码显示了如何解析 DjangoFilterConnectionField,它与任何其他 Django 查询解析方法类似。

    @login_required
    def resolve_all_users(self, info, **kwargs):
        user = info.context.user
        if user.is_superuser:
            return User.objects.all()
        else:
            return User.objects.filter(user_id=user.user_id)
© www.soinside.com 2019 - 2024. All rights reserved.