Open
Description
Are there plans to add support for union types in connections? I have a setup like the following:
class Cat(SQLAlchemyObjectType):
class Meta:
model = CatModel
interfaces = (relay.Node,)
class Dog(SQLAlchemyObjectType):
class Meta:
model = DogModel
interfaces = (relay.Node,)
class Animal(graphene.Union):
class Meta:
types = (Cat, Dog)
class Query(graphene.ObjectType):
animals = SQLAlchemyConnectionField(Animal)
and when I try to query for animals, I get the error: 'UnionOptions' object has no attribute 'model'
.
I traced this back to the self.model
call in wrap_resolve()
:
def wrap_resolve(self, parent_resolver):
return partial(
self.connection_resolver,
parent_resolver,
get_nullable_type(self.type),
self.model,
)
def model(self):
return get_nullable_type(self.type)._meta.node._meta.model
When the type is a union, get_nullable_type(self.type)._meta.node._meta
returns the union class (in this case Animal
). In order to get a model from that, we have to drill down into its types (e.g. get_nullable_type(self.type)._meta.node._meta.types[0]._meta.model
) but because it's a union, it will contain multiple models.
Any ideas how to get around this?
Metadata
Metadata
Assignees
Labels
No labels