Django项目中如何查询并展示用户已点赞的电影列表
Django查询指定用户点赞电影的实现方案
因为你在moviefiles模型的多对多点赞字段中设置了related_name='movie_like',可以直接通过Django ORM实现查询,不需要手动操作中间关联表,以下是两种常用实现方式:
方式1:从用户对象反向查询(适合查询当前登录用户的点赞列表)
直接通过用户实例的movie_like属性获取所有关联的点赞电影,代码示例:
# 个人主页视图示例 def user_profile(request): if not request.user.is_authenticated: return redirect('/user/signup') # 直接获取当前登录用户点赞的所有电影 liked_movies = request.user.movie_like.all() # 传递到模板渲染即可 return render(request, 'user_profile.html', {"liked_movies": liked_movies})
方式2:从电影模型正向过滤(适合查询任意指定用户的点赞列表)
如果你需要查询指定ID的用户的点赞电影,可以通过moviefiles模型的liked字段过滤:
from django.contrib.auth.models import User # 示例:查询id为5的用户点赞的所有电影 # 方法A:传入用户实例过滤 target_user = User.objects.get(id=5) liked_movies = moviefiles.objects.filter(liked=target_user) # 方法B:直接传入用户ID过滤,不需要先查询用户实例 liked_movies = moviefiles.objects.filter(liked__id=5)
模板渲染示例
你可以在个人主页模板中直接遍历返回的liked_movies展示内容:
<div class="liked-movie-list"> <h3>我点赞的电影</h3> {% for movie in liked_movies %} <div class="movie-item"> <p>电影名称:{{ movie.name }}</p> <p>时长:{{ movie.duration }}</p> <p>评分:{{ movie.rt }}</p> </div> {% empty %} <p>暂无点赞的电影</p> {% endfor %} </div>
以上查询方式和你使用MongoDB作为底层数据库无关,Django ORM已经兼容了多对多字段的查询适配,只要你的点赞关联数据存储正常,查询即可正常返回结果。
内容的提问来源于stack exchange,提问作者Himanshu Gaikwad
相关产品推荐
相关产品推荐

