如何使用属于该组的成员列表初始化组对象(并且用户必须知道他们所属的组)?
用户有很多组。群组有很多用户。
我还在User类中尝试了add_to_group
方法,但这并没有真正解决。
这是我第一次处理多对多关系,所以我还没弄清楚如何做到这一点,所有SO帖子都引用查询多对多关系而不是创建使用的对象它们。
class User(db.Model):
__tablename__ = 'User'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), unique = False, nullable = False)
username = db.Column(db.String(80), unique = True, nullable = False)
fb_id = db.Column(db.String(80), unique = True, nullable = False)
groups = db.relationship('Groups', secondary=groups, backref=db.backref('User', lazy='dynamic'))
groups = db.Table('groups',
db.Column('group_id', db.Integer, db.ForeignKey('Group.id')),
db.Column('user_id', db.Integer, db.ForeignKey('User.id'))
)
class Group(db.Model):
__tablename__ = 'Group'
id = db.Column(db.Integer, primary_key=True)
last_updated = db.Column(db.DateTime, mutable=True)
def __init__(self):
self.last_updated = datetime.utcnow();
谢谢!
答案 0 :(得分:3)
在SQLAlchemy中,多对多关系被建模为其值为列表的属性。
u = User()
g = [Group(), Group(), Group()]
u.groups = g
您也可以就地更改列表:
g1 = Group()
u.groups.append(g)
关系的另一面也会以同样的方式运作:
g.users.append(User())
当您改变多对多关系的一方时,SQLAlchemy会保持另一方的最新状态 - 换句话说,如果您从User
删除Group
users
列表,然后Group
的{{1}}列表中不再显示User
。