Flask-sqlachemy无法附加并使用backref

时间:2015-08-14 15:09:50

标签: python flask sqlalchemy flask-sqlalchemy

这是我的帖子模型:

class Post(UserMixin,db.Model):
    __tablename__ = "posts"

    id = db.Column(db.Integer,primary_key = True)
    posts = db.Column(db.String(500))
    post_author = db.Column(db.Integer,db.ForeignKey("users.id"))

这是我的用户模型:

 class User(UserMixin,db.Model):
        __tablename__ = "users"
        id = db.Column(db.Integer,primary_key = True)
        username = db.Column(db.String(60),unique = True, index = True)
        first_name = db.Column(db.String(60),unique = True, index = True)
        last_name = db.Column(db.String(60), index = True)
        password = db.Column(db.String(100))



        user_post = db.relationship("Post",secondary = post , primaryjoin = (post.c.user_id == id), secondaryjoin = (post.c.post_id == Post.id),
        backref = db.backref("authored_post",lazy = "dynamic"),lazy = "dynamic")

现在我在名为authored_post

的帖子模型上有一个backref

这是我试过的

db.session.add(Post(posts = posted, post_author = current_user.id, authored_post = current_user))

因为基本上我要做的就是查询所有帖子,找出谁通过backref创作了每个帖子,这样我就可以获得last_name属性但是authored_post = current_user会返回错误表示User object is not iterable的错误。

附加到它的

也无效Post.authored_post.append(current(user)) 它也会引发错误。那么我们如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

以及其他遇到此类问题的人的参考。

我解决了这个问题

class Post(UserMixin,db.Model):
    __tablename__ = "posts"

    id = db.Column(db.Integer,primary_key = True)
    posts = db.Column(db.String(500))
    post_author = db.Column(db.Integer,db.ForeignKey("users.id"))
    author = db.relationship("Users")

我的解决方法只是添加另一种关系,所以当你做

db.session.add(Post(posts = posted, post_author = current_user.id, author = current_user))

如果您查询所有这样的Post对象并获取每个单独对象:

post = [i for i in Post.query.all()]

您现在可以访问Users模型上的所有属性了!

只是这样做:

for i in post:
 print(i.author.first_name,i.author.last_name)

我是Sqlalchemy的新手,对于python来说还是新手。我希望帮助一些新手