假设我有两个表Person
和Group
。这两个表之间存在关系。一个Person
有一个nickname
,并且nickname
需要在Person
链接到的Group
中是唯一的。如何为Person
表编写validate_nickname
?你知道吗
我想收集属于被添加的Person
所属的Person
的每一个nickname
,并验证被添加的nickname
是否已经存在。我只是不知道如何查询每个Person
,因为我无法访问validate_nickname
内的任何SQLAlchemy.Session
。你知道吗
小玩具示例:
from sqlalchemy.orm import validates, relationship
class Group(Base):
__tablename__ = 'group'
id = Column(Integer, primary_key=True)
name = Column(String)
class Person(Base):
__tablename__ = 'person'
id = Column(Integer, primary_key=True)
name = Column(String)
nickname = Column(String)
group = relationship("Group", uselist=False)
@validates('nickname')
def validate_nickname(self, key, nickname):
# collect nickname from every Person with group == group of person being added
# check if nickname of person being added does not exist in list generated above
# raise an exception in case the nickname already exists
return address
感谢@IljaEverilä的回答。我向
Person
添加了一个group_id
外键(在示例中我忘了添加这个外键),并向__table_args__
添加了一个带有group_id
和name
的UniqueConstraint。你知道吗相关问题 更多 >
编程相关推荐