Flask SQLAlchemy外键查询

时间:2017-04-03 11:37:49

标签: flask sqlalchemy flask-sqlalchemy

我对Python和编程很新。我可以在逻辑上使用一些帮助。

我有3个表,用户,帖子,评论。表注释有一列" user_id"其中有一个Foreign_Key到users列" id"。也作为post_id与FK到post_id。

comments.user_id = users.id&& comments_post_id = posts.id

查询我正在使用的特定帖子:

post = Posts.query.filter_by(id=post_id).first_or_404()

查询我正在使用的评论:

comments = Comments.query.filter_by(post_id=post_id).order_by(Comments.time.desc()).all()

我想从users表中获取comments.user_id的用户名....这是我的逻辑被扰乱的地方。

使用FK可以直接引用Users.username吗?或者FK只是映射一个关系,所以我可以运行查询。其中comments.user_id = Users.id ....获取用户名和所有内容。我觉得我这样做效率很低。

我想将comment.user_id替换为" Users.username,其中comment.user_id = user_id"

{% if comments %}
  {% for comment in comments %}
    {{ comment.user_id }}
    {{ comment.time }}
    {{ comment.comment }}
  {% endfor %}
{% endif %}

我认为我需要做的是在评论中创建一个新专栏,comments.user_username&给它一个用户名的FK。我一直收到150错误,列相同。相同的排序规则,数据类型和长度。

1 个答案:

答案 0 :(得分:1)

您可以按如下方式定义SQLAlchemy类型为relationship的属性:

class Comment(db.Model):
    id = db.Column(db.Integer(), primary_key=1)
    content = db.Column(db.Text(), nullable=0)
    create_user_id = db.Column(db.Integer(), db.ForeignKey("user.id"))
    create_user = db.relationship("User", foreign_keys=create_user_id)
    post_id = dn.Column(db.Integer(), db.ForeignKey("post.id"))

您可以在模板文件中编写comment.create_user.username