我的一个模型有以下关系:
class User(Base):
account = relationship("Account")
我想手动设置帐号ID。
我的第一次尝试是:
class User(Base):
account = relationship("Account")
accounts_id = Column(Integer, ForeignKey("accounts.id"), nullable=True)
@classmethod
def from_json(cls, json):
appointment = Appointment()
appointment.account_id = json["account_id"]
return appointment
以上的工作。我们无法引用此专栏,因为SQLAlchemy会引发一个问题。这是例外:
sqlalchemy.exc.InvalidRequestError: Implicitly combining column users.accounts_id with column users.accounts_id under attribute 'accounts_id'. Please configure one or more attributes for these same-named columns explicitly.
我试图通过文档进行搜索,并且通过多种方式获取属性,但我无法找到,更不用说设置它了。
print(self.account.account_id)
print(self.account.relationhip)
print(self.account.properties)
print(self.account.primaryjoin)
有什么想法吗?
[编辑 - 上面添加的例外]
答案 0 :(得分:6)
使用Account
类定义relationship
,并添加backref
关键字参数:
from sqlalchemy.orm import relationship
class User(Base):
accounts_id = Column(Integer, ForeignKey('account.id'))
class Account(Base):
users = relationship('User', backref='account')
如果在单个关系中使用
backref
关键字,则与使用back_populates
分别创建上述两个关系的情况完全相同。
<强>参考强>