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