首页 > 解决方案 > 在 Graphql 查询中收到不兼容的实例

问题描述

当我在下面的这个请求中失眠时,它会显示这个响应。我该如何解决这个问题?

要求:

query{
    datewiseCoronaCasesList{
        updatedAt,
        affected,
        death,
        recovered
    }
}

回复:

{
    "errors": [
        {
            "message": "Received incompatible instance \"{'updated_at': datetime.date(2020, 4, 8), 'affected': 137, 'death': 42, 'recovered': 104}\"."
        }
    ],
    "data": {
        "datewiseCoronaCasesList": [
            null
        ]
    }
}

我的期望我已经收到了错误消息,但是这样:

{
    'updated_at': datetime.date(2020, 4, 8),
    'affected': 137,
    'death': 42,
    'recovered': 104
}

我的 GraphQL 查询:

class CoronaQuery(graphene.ObjectType):
    datewise_corona_cases_list = graphene.Field(CoronaCaseType)

    def resolve_datewise_corona_cases_list(self, info, **kwargs):
        return CoronaCase.objects.values('updated_at').annotate(
affected=Sum('affected'),death=Sum('death'), recovered=Sum('recovered'))

我的模型:

class CoronaCase(models.Model):
    affected = models.IntegerField(default=0)
    death = models.IntegerField(default=0)
    recovered = models.IntegerField(default=0)
    district = models.CharField(max_length=265, null=False, blank=False)
    created_at = models.DateTimeField(default=timezone.now)
    updated_at = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return "Affected from: {}".format(self.district)

标签: pythondjangopostgresqlgraphql

解决方案


CoronaQuery类下,由于您要返回对象(实例)列表, graphene.Field因此应将其更改为graphene.List.

我是说:

class CoronaQuery(graphene.ObjectType):
    datewise_corona_cases_list = graphene.List(CoronaCaseType) 

推荐阅读