Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

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

Aperta
#415 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
25/100
Tipo di issue
Funzionalità
Chiarezza
Da chiarire
Stato di attività
Ferma
Stack tecnologico
graphql, python, sqlalchemy
Ambito
api, backend, database

Direzione di ricerca

Inizia da SQLAlchemyConnectionField.wrap_resolve() e dalla sua proprietà model, quindi riproduci la query segnalata usando una union Graphene di classi SQLAlchemyObjectType. Traccia il modo in cui i dati _meta della union raggiungono il resolver della connection; è necessario definire come devono essere gestite le connection con più modelli sottostanti senza l’errore UnionOptions.model segnalato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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?

Lingua principale
Python
Stelle
985
Fork
224
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di graphql-python/graphene-sqlalchemy

Tutte le issue di graphql-python/graphene-sqlalchemy

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.