gpt4 book ai didi

python - Flask-SQLAlchemy - Backref 不起作用,值为 None

转载 作者:太空宇宙 更新时间:2023-11-03 16:11:52 26 4
gpt4 key购买 nike

我想我有和 here on SO. 相同的问题使用 python 3.5、flask-sqlalchemy 和 sqlite。我正在尝试建立一对多(帖子)关系。

class User(db_blog.Model):
id = db_blog.Column(db_blog.Integer, primary_key=True)
nickname = db_blog.Column(db_blog.String(64), index=True, unique=True)
email = db_blog.Column(db_blog.String(120), unique=True)
posts = db_blog.relationship('Post', backref='author', lazy='dynamic')

def __repr__(self):
return '<User: {0}>'.format(self.nickname)

class Post(db_blog.Model):
id = db_blog.Column(db_blog.Integer, primary_key=True)
body = db_blog.Column(db_blog.String(2500))
title = db_blog.Column(db_blog.String(140))
user_id = db_blog.Column(db_blog.Integer, db_blog.ForeignKey('user.id'))

def __init__(self, body, title, **kwargs):
self.body = body
self.title = title

def __repr__(self):
return '<Title: {0}\nPost: {1}\nAuthor: {2}>'.format(self.title, self.body, self.author)

作者无。

>>> u = User(nickname="John Doe", email="jdoe@email.com")
>>> u
<User: John Doe>
>>> db_blog.session.add(u)
>>> db_blog.session.commit()
>>> u = User.query.get(1)
>>> u
<User: John Doe>
>>> p = Post(body="Body of post", title="Title of Post", author=u)
>>> p
<Title: Title of Post
Post: Body of post
Author: None> #Here I expect- "Author: John Doe>"

在帖子的 session 添加/提交后,我得到相同的结果,因此找不到帖子作者。

最佳答案

如果将新创建的 post 添加到用户的 posts 属性中,它将起作用:

>>> u = User(nickname="John Doe", email="jdoe@email.com")
>>> u
<User: John Doe>
>>> db_blog.session.add(u)
>>> p = Post(body="Body of post", title="Title of Post")
>>> p
<Title: Title of Post
Post: Body of post
Author: None>
>>> db_blog.session.add(p)
>>> db_blog.session.commit()
>>> u.posts.append(p)
>>> p
<Title: Title of Post
Post: Body of post
Author: <User: John Doe>>
>>> p.author
<User: John Doe>

您的代码无法按原样工作的原因是您为 Post 类定义了一个 __init__ 构造函数,并且这没有考虑author 字段根本不存在,因此 Python 不知道如何处理该 author 参数。

关于python - Flask-SQLAlchemy - Backref 不起作用,值为 None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39215663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com