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

{% for v in page_data.items %}

<div class="comment-text">

                                    <span class="username">

                                        {{ v.user.name }}

                                        <span class="text-muted pull-right">

                                            <i class="fa fa-calendar" aria-hidden="true"></i>

                                            &nbsp;

                                            {{ v.addtime }}

                                        </span>

                                    </span>

                            关于电影<a>《{{ v.movie.title }}》</a>的评论:{{ v.content }}

                            <br><a href="{{ url_for('admin.comment_del',id=v.id) }}"

                                   class="label label-danger pull-right">删除</a>

                        </div>

{% 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')

猜你喜欢

转载自blog.csdn.net/lollipop_sun/article/details/81223611