jinja2.exceptions.UndefinedError: 'app.models.Comment object' has no attribute 'movie'

{% for v in page_data.items %}

{{ v.user.name }}   {{ v.addtime }} 关于电影《{{ v.movie.title }}》的评论:{{ v.content }}
删除
{% endfor %}
def comment_list(page=None):

    if page is None:

        page = 1

    page_data = Comment.query.join(

        Movie

    ).join(

        User

    ).filter(

        # User.id == Comment.user_id,

        Movie.id == Comment.movie_id

    ).order_by(

        Comment.addtime.desc()

    ).paginate(page=page, per_page=10)

    return render_template("admin/comment_list.html", page_data=page_data)

个人分析:

网上说可能是编译文件的问题,试了试没成功。join与filter不写的效果和写了效果一样,page_data中的items数据一样,items中有User对象,但没有Movie对

象,这就是为什么没有movie属性的原因。但为什么page_data.items中没有Movie对象暂时还不知道为什么,我想是不是和数据库查询有关,它没能筛选出movie。

解决:

最后发现是外键的问题,没有写在movie模型中写关联关系。

movie_id = db.Column(db.Integer, db.ForeignKey('movie.id'))

 

comments = db.relationship("Comment", backref='movie')

你可能感兴趣的:(所遇问题)