附加到SQLAlchemy可变列表(获取无法适应类型“发布”错误)

时间:2018-01-13 19:37:30

标签: python postgresql flask sqlalchemy mutable

我正在使用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')

0 个答案:

没有答案