多対多の関係の 1 対多の部分を python set() に変換しようとしています。コードについては、次の再生例を参照してください。
message_tos = Table('message_tos', Base.metadata,
Column('message_id', Integer, ForeignKey('message.id')),
Column('address_id', Integer, ForeignKey('address.id'))
)
class Address(Base):
address = Column(String, nullable=False, unique=True)
emails = relationship('Message')
def __init__(self, address):
self.address = address
class Email(Base):
from = relationship('Address', backref='from')
to = relationship('Address', secondary=message_tos, backref='messages_to')
message_id = Column(String, nullable=False, unique=True)
...
def whatever(*args, **kwargs):
"""
...
"""
email = session.query(Email).filter(Email.message_id==message_id).first()
blah = set(email.to).union(email.from) # This lines throws an error that Address is not iterable
(Address オブジェクトをセットに配置する) コードを実行する方法はありますかset(email.to)
、それとも完全に間違った方法でしょうか? 明らかに、set([email.to]) を実行することもできますが、これは完全に余分な複雑さの順序です (そして、この関数は潜在的に非常に長い .to または .from リストで複数回呼び出される可能性があります)。持ってる