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

Django报错:BaseManager.all()收到意外关键字参数'Login'求助

问题修正方案

错误翻译

错误信息:BaseManager.all() 收到意外的关键字参数 'Login'

错误原因

all()方法仅用于获取模型的全部数据,不接受任何查询条件参数。你想根据关联的User对象筛选Users数据,不能直接给all()传参,得用专门的过滤方法。

修正方法

方法1:使用filter()或get()筛选

  • 若不确定是否存在对应记录,用filter()返回查询集(可能为空):
def Account(request):
    user = Users.objects.filter(Login=request.user)
    context = {
        'title': 'title',
        'user': user,
    }
    return render(request=request, template_name='site/account.html', context=context)
  • 若确定当前登录用户一定有对应的Users记录,用get()直接获取单个对象:
def Account(request):
    user = Users.objects.get(Login=request.user)
    context = {
        'title': 'title',
        'user': user,
    }
    return render(request=request, template_name='site/account.html', context=context)

方法2:利用一对一关系的反向关联

因为Login是一对一字段,Django会自动给User模型添加反向关联属性(默认是模型名小写users),可直接通过当前用户对象获取对应数据:

def Account(request):
    # 需确保用户已登录且存在对应Users记录,否则会抛出异常
    user = request.user.users
    context = {
        'title': 'title',
        'user': user,
    }
    return render(request=request, template_name='site/account.html', context=context)

方法3:结合get_object_or_404处理不存在的情况

若想在没有对应记录时返回404页面,可使用get_object_or_404:

from django.shortcuts import get_object_or_404

def Account(request):
    user = get_object_or_404(Users, Login=request.user)
    context = {
        'title': 'title',
        'user': user,
    }
    return render(request=request, template_name='site/account.html', context=context)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:52:11