Django - 编辑默认石墨烯集查询

Django - edit default graphene Set query

我正在使用 graphql 构建一个 django 应用程序,我有两个模型

列模型:

class Column(models.Model):
    name = models.CharField(max_length=100)

任务模型:

class Task(models.Model):
    column = models.ForeignKey(Column, on_delete=models.CASCADE)
    content = models.CharField(max_length=255)
    position = models.IntegerField()

我有一个查询来查询所有列及其任务

class ColumnType(DjangoObjectType):
    class Meta:
        model = Column

class Query(object):
    columns = graphene.List(ColumnType)

    def resolve_columns(self, info, **kwargs):
        return Column.objects.all()

我可以通过以下方式查询:

{
    columns {
        id
        taskSet{
            content
        }
    }
}

但是这样做我无法将字段添加到 taskSet 函数,所以我想添加一个过滤器,它只会获得前 20 个任务

如果您总是只想显示前 20 个结果,您可以试试这个:

class Query(object):
    columns = graphene.List(ColumnType)

    def resolve_columns(self, info, **kwargs):
        return Column.objects.all()[0:20]

或者,如果您想在 运行 查询时提供过滤器编号,您可以尝试这样的操作:

class Query(object):
    columns = graphene.List(ColumnType, myFilter=Int())

    def resolve_columns(self, info, **kwargs):
    my_filter = kwargs.get('myFilter')
    if my_filter is not None:
        return Column.objects.all()[0:my_filter]
    return None

并这样称呼它:

{
    columns {
        id
        taskSet(myFilter:20){
            content
        }
    }
}