【发布时间】:2013-02-17 05:27:03
【问题描述】:
如何使用属于组的成员列表初始化一个组对象(并且用户必须知道他们所属的组)?
用户有很多组。组有很多用户。
我还在 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();
谢谢!
【问题讨论】:
-
db.backref()的第一个参数是 backref 属性应该采用的名称,而不是映射类的名称。因此,为了在您的情况下保持一致性,您可能希望将其从User更改为users。这将在Group类的每个实例上创建一个名为users的属性。 -
另外,
db.relationship的第一个参数 是关系另一端的类的名称,所以你需要将Groups替换为Group. -
好的,感谢您的提示。将对我的代码进行适当的更改。
标签: python web-applications sqlalchemy flask-sqlalchemy