SQLAlchemy的ManyToMany关系中使用带有附加字段的中间表

6 浏览
0 Comments

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字段呢?

0