很抱歉问了这么一个基本的问题,但我不能把它弄清楚。
我有一个多对一的关系,用户可以有一个特定的角色。这对我来说应该足够了。我创建了以下模型:
class User(UserMixin, db.Model):
__tablename__="users"
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(128))
password_hash = db.Column(db.String(128))
role = db.relationship('Role', passive_deletes=True)
role_id = db.Column(db.Integer(),db.ForeignKey("roles.id"))
def check_password(self, password):
return check_password_hash(self.password_hash, password)
def get_id(self):
return self.username
def get_role(self):
return self.role
# Define the Role data-model
class Role(db.Model):
__tablename__ = 'roles'
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(50), unique=True)
之后,我想将角色设置为以下
....
vorname = request.form["inputVorname"]
nachname = request.form["inputNachname"]
staff_user = User(username = vorname[0:1]+nachname[0:3], password_hash = generate_password_hash("test123"))
role = Role.query.filter(Role.name == request.form.get('inputRole')).first()
staff_user.role.append(role)
在我的脑海里:
从下拉列表中,我查询正确的角色对象,然后将该对象附加到表中。
但我收到了以下内容:AttributeError:"NoneType"对象没有属性"append">
我想,如果我有相关的模型/对象,我需要在表中添加该对象?
提前感谢
由于用户只有一个角色(它是多对一的,许多用户都有一个角色(,所以角色不是list
,所以你不需要附加到它。你只需要说User.role = role
。
例如问题staff_user.role = role
中的代码。