Django-编辑默认石墨烯设置查询

时间:2019-07-31 04:07:15

标签: django graphql graphene-python

我正在用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个任务的过滤器

1 个答案:

答案 0 :(得分:1)

如果您始终只想显示前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
        }
    }
}