상황 :많은 - 투 - 많은 SQLAlchemy의 채우기 관계 ID의 대신 객체를 사용
그래서, 내가 association table를 사용하여 SQLAlchemy의에서 기본 대다 관계를 가지고있다.
예를 들어, 사람이 많은 파티에 참석할 수 있으며, 파티 손님들 많은 사람이 있습니다 : 나는, 나는 이런 식으로 뭔가를 할 것 파티에 손님의 목록을 추가하고자한다면 일반적으로
class Person(Base):
__tablename__ = 'person'
id = Column(Integer, primary_key=True)
name = db.Column(db.String(50))
class SexyParty(Base):
__tablename__ = 'sexy_party'
id = Column(Integer, primary_key=True)
guests = relationship('Person', secondary='guest_association',
lazy='dynamic', backref='parties')
guest_association = Table(
'guest_association',
Column('user_id', Integer(), ForeignKey('person.id')),
Column('sexyparty.id', Integer(), ForeignKey('sexyparty.id'))
)
를 : 왕자, 올리비아와 브리트니 모든 <Person>
인스턴스이며, my_party가 <SexyParty>
인스턴스
my_guests = [prince, olivia, brittany, me]
my_party.guests = guests
db.session.commit()
....
내 질문 :
나는 사람 ID의 아닌 인스턴스를 사용하여 파티에 손님을 추가하고 싶습니다. 예를 들어 :
guest_ids = [1, 2, 3, 5]
my_party.guests = guest_ids # <-- This fails, because guest_ids
# are not <Person> instances
난 항상 데이터베이스에서 인스턴스를로드 할 수 있지만, 그냥 간단한 다 대다 관계를 설정하기 위해 불필요한 DB 쿼리를 수반한다.
person_id의 목록을 사용하여 .guests
속성을 설정하는 방법은 무엇입니까? 연관 테이블이 궁극적으로 ID를 사용하여 다 대다 관계를 나타 내기 때문에이 작업을 수행하는 간단한 방법이 있어야합니다.
미리 감사드립니다.
완벽한 답변. 인상적이다! – tohster