SQL炼金术-烧瓶-多对一



很抱歉问了这么一个基本的问题,但我不能把它弄清楚。

我有一个多对一的关系,用户可以有一个特定的角色。这对我来说应该足够了。我创建了以下模型:

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中的代码。

最新更新