在sqlalchemy中绑定关系时分配变量

2024-10-06 07:17:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下两门课:

class user(Base):
   ....
   id=Column(Integer, primary_key=True)
   address=relationship('Address',backref='user')

class Address(Base):
   ...
   IsItAssgined=False
   user_id=Column(Integer, ForeignKey('user.id'))

让我们创建这些类的两个实例:

^{pr2}$

我想要以下行为:在将Addr附加到用户之后,地址中的字段IsItAssigned更新为True,即

Tom.address.append(Addr)
print Addr.IsItAssigned 
-> to be True

如果可能的话,我不知道怎么用形容词。在


Tags: keyidtruebaseaddresscolumnintegerclass
1条回答
网友
1楼 · 发布于 2024-10-06 07:17:59

我将使用一个属性来测试user_id列是否为空。在这里,^{}似乎很合适:

from sqlalchemy.orm import column_property

class Address(Base):
   ...
   user_id = Column(Integer, ForeignKey('user.id'))
   IsItAssigned = column_property(user_id != None)

现在IsItAssigned将是True或{}。或者,使用hybrid property

^{pr2}$

混合属性的优点是可以在查询中使用。最后但并非最不重要的是,对于这种情况,也许普通属性也可以,但它只对已加载的实例有效:

class Address(Base):
   ...
   user_id = Column(Integer, ForeignKey('user.id'))

   @property
   def IsItAssigned(self):
       return self.user_id is not None

不过,我会用一个不同的名字。assigned可能更好;Python style guide (PEP 8)提倡方法和实例属性的{}。在

相关问题 更多 >