You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 21:54:02