Aggiornamento:SQLAlchemy bidirezionale rapporto di associazione delega
Per chiunque abbia questo problema, con il very latest SQLAlchemy è stato risolto questo comportamento.
problema originale:
Sto avendo un problema con ottenere i proxy di associazione per aggiornare correttamente.
Utilizzando i modelli di esempio qui: http://docs.sqlalchemy.org/en/rel_0_7/orm/extensions/associationproxy.html#simplifying-association-objects
Ma cambiare UserKeyword con questa linea:
keyword = relationship("Keyword", backref=backref("user_keywords", cascade="all, delete-orphan"))
e l'aggiunta di questo per parola chiave:
users = association_proxy('user_keywords', 'user')
Così un'istanza parola chiave ha una lista di utenti.
le seguenti funzioni come previsto:
>>> rory = User("rory")
>>> session.add(rory)
>>> chicken = Keyword('chicken')
>>> session.add(chicken)
>>> rory.keywords.append(chicken)
>>> chicken.users
[<__main__.User object at 0x1f1c0d0>]
>>> chicken.user_keywords
[<__main__.UserKeyword object at 0x1f1c450>]
Ma traslochi fanno cose strane. La rimozione dalle liste associazione procura in questo modo:
>>> rory.keywords.remove(chicken)
causa un errore di integrità come SA tenta di impostare una delle colonne chiave esterna NULL.
Fare questo:
>>> rory.user_keywords.remove(rory.user_keywords[0])
I risultati in questo:
>>> chicken.users
[None]
ho mancato qualche cosa di evidente non ho?
Grazie heap zzzeek. –