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

Django项目运行报UserInfo matching query does not exist错误求助

Django UserInfo matching query does not exist 报错原因及解决方案

报错原因

  • 你在代码中使用UserInfo.objects.get(user__pk=user_id)查询时,当前登录的Django内置User账号没有对应的UserInfo关联记录,get()方法查询不到匹配结果就会抛出该异常。
  • 之所以会没有关联记录,是因为你定义的一对一外键仅定义了表关系,不会在创建User账号时自动生成对应的UserInfo表行,尤其是通过createsuperuser命令创建的管理员账号,默认走Django原生创建逻辑,不会触发UserInfo的生成。

解决方案

你可以根据自己的业务需求选择以下任意一种方案:

方案1:使用get_or_create()自动补全缺失记录

直接修改视图中的查询逻辑,查不到关联记录时自动创建一条空的UserInfo记录,不需要改动其他业务代码:

def index(request):
    dict={}
    if request.user.is_authenticated:
        # 不需要重复查询User,request.user本身就是当前登录的User对象
        user_basic_info = request.user
        # 第一个返回值是查询/创建的UserInfo对象,第二个是是否为新创建的布尔值
        user_more_info, created = UserInfo.objects.get_or_create(user=request.user)
        dict = {'user_basic_info':user_basic_info, 'user_more_info':user_more_info}
    
    return render(request, 'Login_app/index.html', context=dict)

方案2:配置信号自动创建关联记录

在models.py中添加Django信号监听逻辑,只要有User对象被创建,就自动生成对应的UserInfo记录,从根源避免该问题:
首先在models.py头部导入信号依赖:

from django.db.models.signals import post_save
from django.dispatch import receiver

然后在UserInfo类定义下方添加信号处理函数:

@receiver(post_save, sender=User)
def create_user_info(sender, instance, created, **kwargs):
    if created:
        UserInfo.objects.create(user=instance)

@receiver(post_save, sender=User)
def save_user_info(sender, instance, **kwargs):
    instance.userinfo.save()

方案3:捕获异常自定义处理逻辑

如果你不想自动创建空记录,可以捕获查询异常,根据业务需求返回空值或者跳转到信息补全页面:

def index(request):
    dict={}
    if request.user.is_authenticated:
        user_basic_info = request.user
        try:
            user_more_info = UserInfo.objects.get(user=request.user)
        except UserInfo.DoesNotExist:
            # 可以赋值为空,也可以写重定向逻辑跳转到信息补全页面
            user_more_info = None
        dict = {'user_basic_info':user_basic_info, 'user_more_info':user_more_info}
    
    return render(request, 'Login_app/index.html', context=dict)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:54:03