如何初始化组对象的成员列表(并且用户必须知道他们是其中的组的成员)的组对象)?创建一个具有多对多关系的对象
用户有很多组。组有许多用户。
我也尝试过用户类中的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属性应该采用的名称,而不是映射类的名称。因此,为了保持一致性,您可能需要将其从“用户”更改为“用户”。这将在“Group”类的每个实例上创建一个名为'users'的属性。 – 2013-03-02 21:53:15
另外,'db.relationship'的第一个参数_is_是关系另一端的类的名称,因此您需要用'Group'替换'Groups'。 – 2013-03-02 21:54:45
好的谢谢你的提示。将在我的代码中进行适当的更改。 – GangstaGraham 2013-03-02 22:06:24