首页 > 解决方案 > 无法使用 graphene_django 从 GraphQL 获取最后 n 个元素

问题描述

我试图在现有的 Django REST 框架中实现 GraphQL。我用石墨烯-django==2.2.0

它已成功实施。但不能在请求查询中使用“last”关键字。我正在添加架构代码。

import graphene
from graphene_django.types import DjangoObjectType
from flowers.models import Flower


class FlowerType(DjangoObjectType):
    class Meta:
        model = Flower


class Query(graphene.ObjectType):
    flowers = graphene.List(FlowerType)

    def resolve_flowers(self, info, **kwargs):
        return Flower.objects.all()

询问

{
    flowers (last: 2){
        id
    }
}

结果

{
  "errors": [
    {
      "locations": [
        {
          "column": 12,
          "line": 2
        }
      ],
      "message": "Unknown argument \"last\" on field \"flowers\" of type \"Query\"."
    }
  ]
}

我是否必须修改 Django 项目中的代码?如何解决?

标签: djangodjango-rest-frameworkgraphqlgraphene-python

解决方案


获取最后 N 个帖子

lastNPosts = graphene.List(PostType, N=graphene.Int())

def resolve_lastNPosts(self, info, N):
    try:
        return Post.objects.order_by('-id')[:N]
    except Post.DoesNotExist:
        return None

推荐阅读