Ho due modelli molto semplici. Nel mio modello Post
ci dovrebbero essere due relazioni nella tabella User
. Uno è per il proprietario del post e uno è per l'ultimo editor del post. Possono essere valori diversi, ma entrambi si riferiscono alla stessa tabella User
.sqlalchemy Errore nella creazione della relazione di ritorno sulla relazione
I miei modelli sono impostati come questo
class Post(Base):
last_editor_id = Column(BigInteger, ForeignKey('users.id'), nullable=True)
last_editor = relationship('User', backref='posts', foreign_keys=[last_editor_id])
owner_id = Column(BigInteger, ForeignKey('users.id'), nullable=False, index=True)
owner = relationship('User', backref='posts', foreign_keys=[owner_id])
class User(Base):
'''This represents a user on the site'''
__tablename__ = 'users'
id = Column(BigInteger, primary_key=True, unique=True)
name = Column(BigInteger, nullable=False)
Quando tento di creare questi modelli, però, ottengo il seguente errore
sqlalchemy.exc.ArgumentError: Error creating backref 'posts' on relationship 'Post.owner': property of that name exists on mapper 'Mapper|User|users'
Come faccio a correggere questo modo che io possa mantenere sia chiavi di forgeign nel modello Post
?
questo fixies il problema di mappatura, ma lui non ha ancora un rapporto di lavoro. – muthan
Beh, non funziona perché nella classe Post manca una chiave primaria, ma la relazione funziona correttamente. – Doobeh
Ah ok non importa, è stato il mio fallimento. ho risolto la mia risposta ora, in modo da avere entrambe le soluzioni. bello sapere che funziona anche in questo modo. – muthan