Relay 石墨烯中的自定义连接场

Relay 石墨烯中的自定义连接场,relay,graphene-python,Relay,Graphene Python,我不明白如何在石墨烯的连接字段中使用自定义字段。我有点像: class ShipConnection(Connection): extra = String() class Meta: node = Ship SHIPS = ['Tug boat', 'Row boat', 'Canoe'] class Query(AbstractType): ships = relay.ConnectionField(ShipConnection) de

我不明白如何在石墨烯的连接字段中使用自定义字段。我有点像:

class ShipConnection(Connection):
    extra = String()

    class Meta:
        node = Ship

SHIPS = ['Tug boat', 'Row boat', 'Canoe']

class Query(AbstractType):
    ships = relay.ConnectionField(ShipConnection)

    def resolve_ships(self, args, context, info):
        return ShipConnection(
            extra='Some extra text',
            edges=???
        )
通常,你会说:

    def resolve_ships(self, args, context, info):
        return SHIPS

但是如何返回额外的内容并返回列表呢?

答案是使用graphene的ConnectionField类的一个未记录的类方法,称为resolve_connection。以下工作:

def resolve_ships(self, args, context, info):
    field = relay.ConnectionField.resolve_connection(
        ShipConnection,
        args,
        SHIPS
    )

    field.extra = 'Whatever'
    return field