sqlalchemy Error creating backref on relationship

后端 未结 2 1631
北荒
北荒 2021-02-07 07:46

I have two very simple models. In my Post model there are supposed to be two relationships into the User table. One is for the owner of the post and on

2条回答
  •  时光取名叫无心
    2021-02-07 08:18

    In general it's a naming Problem of the backref.

    Since 1:n relationships are sometimes a bit confusing, I set the relationship attribute always on the singular site, to avoid confusion.

    then the backref name is always singular. and the relationship attribute is always in the Class where the foreignkey is referencing to.

    Now to my suggestion for the fixed code:

    class Post(Base):
        last_editor_id = Column(BigInteger, ForeignKey('users.id'), nullable=True)
    
        owner_id = Column(BigInteger, ForeignKey('users.id'), nullable=False, index=True)
    
    
    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)
        owned_posts = relationship('Post', backref='owner')
        edited_posts = relationship('Post', backref='last_editor')
    

    Now you can get all the owned posts of a User with User.owned_posts and all owners of a post with Post.owner. Same with the last_edited attribute.

    For additional info you could read the docs how to set up relationships

提交回复
热议问题