在sqlalchemy中设置一对多关系,但不断出现歧义ForeignKeysError



我试图在两个表(分别是User和BlogPost(之间建立一对多关系。我试着复制这个课程的解决方案,但仍然会出现外键错误。我做错了什么?或者,这实际上是sqlalchemy的问题吗(1.3.19节(?

我甚至尝试过升级到当前版本(1.4.31(,但没有成功。我收到运行时错误(烧瓶页面错误报告(,通常在home()posts = BlogPost.query.all()行附近。现在我已经升级了包,我收到了来自db.create_all()行的构建时错误(AttributeError: can't set attribute(。

我也尝试过删除数据库,但没有成功。

如果在其他地方得到了回复,或者需要更多信息,请留下评论。

这是Main.py:中的一个片段

db = SQLAlchemy(app)
class User(db.Model, UserMixin):
__tablename__ = "users"
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(250), nullable=False)
password = db.Column(db.String(250), nullable=False)
name = db.Column(db.String(100), nullable=False)
posts = relationship("BlogPost", back_populates="author")

class BlogPost(db.Model):
__tablename__ = "blog_posts"
id = db.Column(db.Integer, primary_key=True)
author_id = db.Column(db.Integer, db.ForeignKey("users.id"))
title = db.Column(db.String(250), unique=True, nullable=False)
subtitle = db.Column(db.String(250), nullable=False)
date = db.Column(db.String(250), nullable=False)
body = db.Column(db.Text, nullable=False)
img_url = db.Column(db.String(250), nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey("users.id"))
author = relationship("User", back_populates="posts")
db.create_all()
@app.route('/')
def home():
posts = BlogPost.query.all()
user = current_user
return render_template("index.html", all_posts=posts, user=user)

我仍然不知道出了什么问题,但以下代码适用于较新的项目。正如我在其中一条评论中所说:我怀疑我当前的PyCharm项目存在问题。

db = SQLAlchemy(app)
class User(UserMixin, db.Model):
__tablename__ = "users"
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(100), unique=True)
password = db.Column(db.String(100))
name = db.Column(db.String(100))
posts = relationship("BlogPost", back_populates="author")

class BlogPost(db.Model):
__tablename__ = "blog_posts"
id = db.Column(db.Integer, primary_key=True)
author_id = db.Column(db.Integer, db.ForeignKey("users.id"))
author = relationship("User", back_populates="posts")
title = db.Column(db.String(250), unique=True, nullable=False)
subtitle = db.Column(db.String(250), nullable=False)
date = db.Column(db.String(250), nullable=False)
body = db.Column(db.Text, nullable=False)
img_url = db.Column(db.String(250), nullable=False)
db.create_all()
@app.route('/')
def home():
posts = BlogPost.query.all()
return render_template("index.html", all_posts=posts)

相关内容

  • 没有找到相关文章