获取\u object \u或\u 404()的第一个参数必须是Model、Manager或QuerySet,而不是“function”

2024-04-26 04:51:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在数据库中显示一些基于用户id的数据,但它总是得到这个ValueError。有人能帮我找出我做错了什么吗?你知道吗

这是我的视图.py你知道吗

from django.shortcuts import render, get_object_or_404
from .models import user

def index(request):
    return render(request, 'pages/index.html')

def user(request, user_id):
    profile = get_object_or_404(user, pk=user_id)
    context = {
        'profile' : profile
    }
    return render(request, 'user/user.html', context)

Tags: orfromimportidgetindexreturnobject
1条回答
网友
1楼 · 发布于 2024-04-26 04:51:14

因为您定义了一个名为user的函数,它已经覆盖了这里对user模型的引用。你知道吗

您可以在导入中使用别名,例如:

from django.shortcuts import render, get_object_or_404
from .models import user as UserModel

def index(request):
    return render(request, 'pages/index.html')

def user(request, user_id):
    profile = get_object_or_404(UserModel, pk=user_id)
    context = {
        'profile' : profile
    }
    return render(request, 'user/user.html', context)

也就是说,根据PEP-8 style guidelines,类的名称应该写在CamelCase,函数的名称应该写在lowercase_separated_by_underscores。因此,如果遵循这些准则,您应该将user模型重命名为User。你知道吗

由于Django已经有了一个名为^{} [Django-doc](在django.contrib.auth)的模型,因此您可能需要重命名为Profile。你知道吗

相关问题 更多 >