0

バックエンドとして Django で Graphene を使用しています。

次のようなクエリがあります。

class Query(object):
    constructor_info = graphene.Field(UnTypedDataType, vin=graphene.String(required=True))
    def resolve_constructor_info(self, info, **kwargs):
        vin = kwargs.get('vin')
        locale = info.context.LANGUAGE_CODE
        constructor_info = get_kp_dict(vin, locale)

        options = []
        for option in constructor_info["vehicle"]["vehicleEquipment"]:
            options.append(
                {
                    'code': option['codeEquipment'],
                    'description': option['equipmentDescription']
                }
            )
        vehicle = {
            'model_year': constructor_info["vehicle"]['voExterior']['modelYear'],
            'short_description': constructor_info["vehicle"]['voExterior']['shortModelTypeDescription'],
            'long_description': "",
            'exterior': "",
            'interior': constructor_info["vehicle"]['voExterior']['descriptionUpholstery'],
            'places': constructor_info["vehicle"]['voExterior']['numberOfPlaces'],
            'doors': constructor_info["vehicle"]['voExterior']['numberOfDoors'],
            'catalog_price': constructor_info["vehicle"]['voExterior']['priceCatalogueWithoutOptions'],
            'catalog_price_with_options': constructor_info["vehicle"]['voExterior']['priceCatalogue'],
            'first_registartion': constructor_info["vehicle"]['entryDate'],
            'vin': constructor_info["vehicle"]['chassisNumber'],
            'commission': constructor_info["vehicle"]['commissionNumber'],
            'power_kw': constructor_info["vehicle"]['powerKW'],
            'model_code': constructor_info["vehicle"]['modelCode'],
            'options': options
        }

        return UnTypedDataType(data=vehicle)

UnTypedDataTypeは次のとおりです

class UnTypedDataType(graphene.ObjectType):
    data = graphene.Field(UnTypedObject)

フロントエンドでは、次のような結果が得られます。

const GET_CONSTRUCTOR_INFO = gql`
  query getConstructorInfo($vin: String!) {
    constructorInfo(vin: $vin) {
      data
    }
  }
`;

そしてdata、車両オブジェクトを取得します。

しかし、次のようにデータを削除して結果を取得する方法はありますか?

const GET_CONSTRUCTOR_INFO = gql`
      query getConstructorInfo($vin: String!) {
        constructorInfo(vin: $vin) {
          model_year
          short_description
          long_description
          ... THE REST ...
        }
      }
    `;
4

1 に答える 1

0

他の誰かがそれを必要とする場合に備えて、次のように問題を解決しました。

constructor_infoクエリを次のように変更しました。

constructor_info = graphene.Field(ConstructorInfoType, vin=graphene.String(required=True))

そして追加されたConstructorInfoTypeクラス:

class ConstructorInfoType(graphene.ObjectType):
    model_year = graphene.String()
    short_description = graphene.String()
    long_description = graphene.String()
    ...THE REST...

    class Meta:
        default_resolver = dict_resolver

そして、React側では次のように使用できます。

const GET_CONSTRUCTOR_INFO = gql`
  query getConstructorInfo($vin: String!) {
    constructorInfo(vin: $vin) {
      modelYear
      shortDescription
      ...THE REST...
    }
  }
`;

それが誰かを助けることを願っています。

于 2019-10-15T06:20:34.413 に答える