0
我在对象User
和Groups
之间拥有多对多的关系。我有一个名为Attends
的关联对象,其中包含额外的字段role
。我想通过使用关联代理来减少关联对象关系的冗长性。不幸的是,当我将一个新用户附加到一个组时,文档不清楚如何明确地添加额外字段role
。SQLAlchemy,在关联代理关系中添加具有额外字段的关联对象
Group类
class Group(db.Model):
__tablename__ = 'group'
gid = db.Column(db.Integer, primary_key=True, autoincrement=True)
oid = db.Column(db.Integer, db.ForeignKey('organization.oid'), nullable=False)
start_time= db.Column(db.DateTime, nullable=False)
end_time = db.Column(db.DateTime, db.CheckConstraint('end_time > start_time'), nullable=False)
location = db.Column(db.String, nullable=False)
description = db.Column(db.Text)
organization = db.relationship('Organization', back_populates='groups')
#many-to-many db.relationship with users
registered_users = association_proxy('user_groups', 'user')
#one to many db.relationship with tags
tags = db.relationship('Tag', back_populates='group')
def add_user(self, user, role):
if not self.has_user(user):
self.registered_users.append(Attend(user, self, role)) <-- error
else:
raise ValueError('user %s already exists', user)
上课
class Attend(db.Model):
__tablename__ = 'attend'
uid = db.Column(db.Integer, db.ForeignKey('user.uid'), primary_key=True)
gid = db.Column(db.Integer, db.ForeignKey('group.gid'), primary_key=True)
user_role = db.Column(db.Enum(*GroupRoles.roles, name='role'))
group = db.relationship('Group',
backref=db.backref('user_groups', cascade='all, delete-orphan'))
user = db.relationship('User')
def __init__(self, user, group, role):
self.user = user
self.group = group
self.user_role = role
执行add_user
方法时,收到以下错误:
def _create(self, value):
> return self.creator(value)
E TypeError: __init__() missing 2 required positional arguments: 'group' and 'role'