我正在使用SQLAlchemy / Postgres / Flask作为网络应用。我试图附加到用户表中的posts
列表。使用可变列表的代码在这里复制并粘贴了MutableList
个类:http://www.kirang.in/2014/08/09/creating-a-mutable-array-data-type-in-sqlalchemy/
但是,当我提交调用下面路线的表单时,我收到错误“无法调整类型'发布'。”它确实打印出了“MADE IT”打印声明。
如果我不使用db.session.commit(),则提交会通过但select * from users
后帖子列表仍为空。如何在我的数据库中附加到此posts
列表?
class User(db.Model):
__tablename__ = "users"
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(120), unique=True)
first_name = db.Column(db.String(120), unique=False)
last_name = db.Column(db.String(120), unique=False)
posts = db.Column(MutableList.as_mutable(ARRAY(db.String)), unique = False)
def __init__(self,username,first_name,last_name):
self.username = username
self.first_name = first_name
self.last_name = last_name
self.posts = []
def add_post(self, post):
self.posts.append(post)
在我的路线中:
@app.route('/add_user', methods=['POST'])
def add_user():
.... # form code
if not db.session.query(User).filter(User.email == email).count():
f = User(username, first_name, last_name, gender, email, photo, age)
db.session.add(f)
db.session.commit()
first_post = Post("abaric","Cars","5","Cars fan!")
f.add_post(first_post)
db.session.commit()
print("MADE IT")
return render_template('success.html')