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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值