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

如何从Profile模型获取User查询集并正确创建好友关联?

解决方案

你的问题核心是invited_user获取的是Profile查询集,而Friends.objects.create()的invited参数需要User实例,而非Profile对象或查询集。以下是修正后的代码和关键说明:

关键修正点

  • 因为invite_code是unique=True的,所以用get()而非filter()获取单个Profile实例(filter返回查询集,get返回单个对象)
  • 通过Profile的user外键属性,拿到对应的User实例,传给invited参数
  • 增加异常捕获,处理邀请码不存在的情况,避免程序崩溃

修正后的Post函数代码

def post(self, request: HttpRequest) -> HttpResponse:
    invite_code = request.POST['invite_code']
    current_user = request.user

    try:
        # 获取对应邀请码的Profile实例,再取出关联的User对象
        invited_profile = Profile.objects.get(invite_code=invite_code)
        invited_user = invited_profile.user
        
        # 创建好友关系
        Friends.objects.create(inviting=current_user, invited=invited_user)
        # 可选:标记被邀请用户的was_invited为True
        invited_profile.was_invited = True
        invited_profile.save()
    except Profile.DoesNotExist:
        # 处理邀请码不存在的情况,比如返回错误提示
        return render(request, 'api_auth_user/user-profile.html', {'error': '无效的邀请码'})

    return render(request, 'api_auth_user/user-profile.html')

额外说明

  • current_user = request.user本身就是User实例,直接传给inviting参数是正确的,无需额外处理
  • 建议在视图前添加登录验证(比如用@login_required装饰器),确保request.user是已登录的有效用户

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 15:17:18