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

Django群组页面点赞第二用户帖子触发DoesNotExist错误如何解决

问题根因

你的代码存在主键混淆逻辑错误:点赞、评论视图传入的pk是帖子(Post)的主键,你直接复用同一个pk去查询群组(GroupEx),只有当Post的主键与GroupEx主键恰好相同时才会正常运行,这就是第一个用户发的帖子正常、后续帖子报错的核心原因。

具体错误点

  1. 点赞视图错误逻辑:
# 此处传入的pk是Post的主键
post = Post.objects.get(pk=pk)
# 错误:直接用Post的主键查询GroupEx
group = GroupEx.objects.get(group=pk)
  1. 评论视图错误逻辑:
post = get_object_or_404(Post, pk=pk)
# 错误:直接用Post的主键查询GroupEx
group = get_object_or_404(GroupEx,pk=pk)
  1. 额外冗余逻辑:点赞视图中return redirect写在了return HttpResponse前面,后者永远不会被执行,属于无效代码。

修正方案

Post模型已经绑定了GroupEx外键,直接从Post对象中读取关联的GroupEx即可,不需要额外查询,同时修正跳转参数错误:

修正后点赞视图

def like(request, pk):
    user = request.user
    post = get_object_or_404(Post, pk=pk)
    # 直接从post的关联字段取群组,不需要额外查询
    group = post.group
    liked= False
    like = Like.objects.filter(username=user, post=post,group=group)
    if like.exists():
        like.delete()
    else:
        liked = True
        Like.objects.create(username=user, post=post, group=group)
    # 按需保留一种返回逻辑,二选一即可
    # 方案1:返回json响应
    # resp = {'liked':liked}
    # return HttpResponse(json.dumps(resp),content_type = "application/json")
    # 方案2:跳转到群组主页,需要传群组主键而非帖子主键
    return redirect('group:main', pk=group.pk)

修正后评论视图

def comment(request, pk):
    context = {}
    user = request.user
    post = get_object_or_404(Post, pk=pk)
    # 直接从post的关联字段取群组,不需要额外查询
    group = post.group
    if request.method == 'POST':
        form = NewCommentForm(request.POST)
        if form.is_valid():
            data = form.save(commit=False)
            data.post = post
            data.group = group
            data.username = user
            data.save()
            # 跳转到群组主页,传群组主键而非帖子主键
            return redirect('group:main', pk=group.pk)
    else:
        form = NewCommentForm()
        
    context['form'] = form  
    return render(request,'group/grouptimeline.html',context)

内容的提问来源于stack exchange,提问作者Godda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:36:04