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