想象一下,我有2个表Person
和Group
。这两个表之间存在关系。 Person
有一个nickname
,并且nickname
在链接Group
的{{1}}中必须是唯一的。我将如何为Person
表编写validate_nickname
?
我想收集要添加的Person
所属的nickname
的{{1}}中的每个Person
,并验证是否已经添加了Group
存在。我不确定如何查询每个Person
,因为我无法访问nickname
内部的任何Person
。
小玩具示例:
SQLAlchemy.Session
答案 0 :(得分:1)
感谢@IljaEverilä的回答。我向group_id
添加了一个Person
外键(我在示例中忘记添加了此外键),并向group_id
添加了带有name
和__table_args__
的UniqueConstraint。 / p>
from sqlalchemy.orm import validates, relationship
from sqlalchemy.schema import UniqueConstraint
class Group(Base):
__tablename__ = 'group'
id = Column(Integer, primary_key=True)
name = Column(String)
class Person(Base):
__tablename__ = 'person'
__table_args__ = (
UniqueConstraint('group_id', 'nickname', name='_group_id_nickname_uc'),
)
id = Column(Integer, primary_key=True)
name = Column(String)
nickname = Column(String)
group_id = Column(Integer, ForeignKey('group.id'))
group = relationship("Group")