SQLAlchemy的ManyToMany关系中使用带有附加字段的中间表
SQLAlchemy的ManyToMany关系中使用带有附加字段的中间表
我有3个表:User(用户)、Community(社区)、community_members(用于用户和社区之间的多对多关系)。我使用Flask-SQLAlchemy创建了这些表:
community_members = db.Table('community_members', db.Column('user_id', db.Integer, db.ForeignKey('user.id')), db.Column('community_id', db.Integer, db.ForeignKey('community.id')), ) class Community(db.Model): __tablename__ = 'community' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100), nullable=False, unique=True) members = db.relationship(User, secondary=community_members, backref=db.backref('community_members', lazy='dynamic'))
现在我想向community_members添加额外的字段,就像这样:
community_members = db.Table('community_members', db.Column('id', db.Integer, primary_key=True), db.Column('user_id', db.Integer, db.ForeignKey('user.id')), db.Column('community_id', db.Integer, db.ForeignKey('community.id')), db.Column('time_create', db.DateTime, nullable=False, default=func.now()), )
现在在Python shell中,我可以这样做:
创建社区:
c = Community() c.name = 'c1' db.session.add(c) db.session.commit()
向社区添加成员:
u1 = User.query.get(1) u2 = User.query.get(2) c.members.append(u1) c.members.append(u2) db.session.commit() c.members
得到的结果是:[
好的,这个工作正常。但是现在我该如何获取community_members表中的time_create字段呢?