graphql-python / graphql-python/graphene-sqlalchemy

Union types in connections: 'UnionOptions' object has no attribute 'model'

Đang mở
#415 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Python
Star
985
Fork
223
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

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?

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.