graphql-python / graphql-python/graphene-sqlalchemy
Union types in connections: 'UnionOptions' object has no attribute 'model'
- Vorherrschende Sprache
- Python
- Sterne
- 985
- Forks
- 223
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
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,
)
```
```@property
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?
Beitragsleitfaden
Bewertung
Dieses Issue wurde noch nicht bewertet.