相关疑难解决方法(0)

使用ID而不是对象填充SQLAlchemy多对多关系

情况:

所以,我在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'))
)
Run Code Online (Sandbox Code Playgroud)

通常,如果我想在聚会上添加一个客人列表,我会做这样的事情:

my_guests = [prince, olivia, brittany, me]
my_party.guests = guests
db.session.commit()
Run Code Online (Sandbox Code Playgroud)

......王子,奥利维亚<Person>和布列塔尼都是实例,my_party就是一个<SexyParty>例子.

我的问题:

我想使用人员ID而不是实例将访客添加到聚会中.例如:

guest_ids = [1, 2, 3, 5]
my_party.guests = guest_ids  # <-- This fails, because guest_ids
                             # are not …
Run Code Online (Sandbox Code Playgroud)

python sql many-to-many sqlalchemy flask-sqlalchemy

12
推荐指数
1
解决办法
3280
查看次数

标签 统计

flask-sqlalchemy ×1

many-to-many ×1

python ×1

sql ×1

sqlalchemy ×1