class Country(db.Model):
    __tablename__ = 'countries'
    id = db.Column(db.Integer, primary_key=True)
    code = db.Column(db.Integer)
    name_en = db.Column(db.String(100))
    user_country = db.relationship('User', backref='country')
    company_country = db.relationship('Company', backref='country')


在此示例中,我将覆盖表名称。那么,backref应该是什么呢? tablename或类名?或者可以是其他任何东西?

从文档:

backref是一种在xxxxx类上声明新属性的简单方法

那么,backref的名称只是一个一般性的描述?

如果我有两个使用国家表的表,则需要创建两个关系,例如在我的示例中?该过程是每个引用在另一个表中的一种关系?

最佳答案

您可以参考此示例。

  class Parent(Base):
        __tablename__ = 'parent'
        id = Column(Integer, primary_key=True)
        children = relationship("Child", backref="parent")

  class Child(Base):
        __tablename__ = 'child'
        id = Column(Integer, primary_key=True)
        parent_id = Column(Integer, ForeignKey('parent.id'))


将孩子存放在父母中

获取父对象。

p = Parent.query.get(1)


使用backref存储在子对象中

c = Child(parent=p)
db.session.add(c)
db.session.commit()


要通过子对象访问父母,您将遵循以下步骤。
制作对象。

child = Child ()


通过backref访问。

child.parent.

关于sql - 定义backref参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26350766/

10-10 00:56