flask-admin:如何获取当前用户的其他信息(除 id、name、email 之外)?
flask-admin: How to get current user's other info(besides id, name, email)?
我希望在创建项目时自动存储用户名和他的团队。 类 定义如下:
class Team(db.Model, RoleMixin):
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(80), unique=True)
def __str__(self):
return self.name
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(255))
last_name = db.Column(db.String(255))
email = db.Column(db.String(255), unique=True)
teams = db.relationship('Team', secondary=teams_users,uselist=False,
backref=db.backref('users', lazy='dynamic'))
def __str__(self):
return self.first_name
class Project(db.Model):
id = db.Column(db.Integer, primary_key=True)
team = db.Column(db.Unicode(64))
developer = db.Column(db.Unicode(128))
def __unicode__(self):
return self.developer
并且我在创建项目时使用以下内容来存储当前用户的名字和团队:
class ProjectView(sqla.ModelView):
def on_model_change(self, form, model, is_created):
if is_created:
model.developer = current_user.first_name
model.team = current_user.teams
用户名保存正确,但队伍保存失败。我还尝试存储 model.team =current_user.email
、 model.team =current_user.last_name
和 model.team =current_user.id
并且都成功了。不确定为什么无法存储 current_user.teams
。谢谢。
因为 User.teams
不是 db.Column
,就像 Project.team
和其他字段一样,它是 db.relationship
,如果你想给它赋值,它必须是 Team
的实例
所以你必须这样做:
class ProjectView(sqla.ModelView):
def on_model_change(self, form, model, is_created):
if is_created:
model.developer = current_user.first_name
model.team = Team(name=current_user.teams)
我希望在创建项目时自动存储用户名和他的团队。 类 定义如下:
class Team(db.Model, RoleMixin):
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(80), unique=True)
def __str__(self):
return self.name
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(255))
last_name = db.Column(db.String(255))
email = db.Column(db.String(255), unique=True)
teams = db.relationship('Team', secondary=teams_users,uselist=False,
backref=db.backref('users', lazy='dynamic'))
def __str__(self):
return self.first_name
class Project(db.Model):
id = db.Column(db.Integer, primary_key=True)
team = db.Column(db.Unicode(64))
developer = db.Column(db.Unicode(128))
def __unicode__(self):
return self.developer
并且我在创建项目时使用以下内容来存储当前用户的名字和团队:
class ProjectView(sqla.ModelView):
def on_model_change(self, form, model, is_created):
if is_created:
model.developer = current_user.first_name
model.team = current_user.teams
用户名保存正确,但队伍保存失败。我还尝试存储 model.team =current_user.email
、 model.team =current_user.last_name
和 model.team =current_user.id
并且都成功了。不确定为什么无法存储 current_user.teams
。谢谢。
因为 User.teams
不是 db.Column
,就像 Project.team
和其他字段一样,它是 db.relationship
,如果你想给它赋值,它必须是 Team
所以你必须这样做:
class ProjectView(sqla.ModelView):
def on_model_change(self, form, model, is_created):
if is_created:
model.developer = current_user.first_name
model.team = Team(name=current_user.teams)