0

私はgraphqlサーバーを構築するためにdjangoグラフェンを使用しています.RESTfull APIを使用してデータを取得します.次のスキーマに従ってください:

class DeviceType(graphene.ObjectType):
    id = graphene.ID()
    reference = graphene.String()
    serial = graphene.Float()

class InstallationType(graphene.ObjectType):
    id = graphene.ID()
    company = graphene.Int()
    device = graphene.ID()

class AllDataType(graphene.ObjectType):
    device = graphene.Field(DeviceType)
    installation = graphene.Field(InstallationType)

class Query(graphene.ObjectType):
    installation = graphene.Field(
        InstallationType,
        device_id=graphene.Int(required=True)
    )
    all = graphene.Field(
        AllDataType,
        serial=graphene.Float(required=True)
    )

    def resolve_installation(self, info, device_id):
        response = api_call('installations/?device=%s' % device_id)['results'][0]
        return json2obj(json.dumps(response))

    def resolve_all(self, info, serial):
        response = api_call('devices/?serial=%s' % serial)['results'][0]
        return json2obj(json.dumps(response))

私がする必要があるクエリは次のようなものです:

query {
    all(serial:201002000856){
        device{
            id
            serial
            reference
        }
        installation{
            company
            device
        }
    }
}

AllDataTypeしたがって、私の問題は、 で説明されているように、この 2 つのresolve_installationタイプdevice idとの関係をどのように作成するかresolve_allです。

インストールを解決するには、リゾルバーからdevice id返されたが必要です。resolve_all

どうすればこれを達成できますか?

4

1 に答える 1