Django使用Ajax时报'QuerySet'无META属性500错误如何解决?
问题原因
你的视图函数命名为list,和Python内置的list()类型转换函数重名,导致当前作用域内的list被覆盖为你自定义的视图函数。
当你在getProfiles中执行list(profiles.values())时,实际调用的是你写的list视图函数,该函数需要接收request对象作为参数,你传入的profiles.values()是QuerySet类型,当函数内部尝试访问传入对象的META属性时,就触发了对应报错。
修复步骤
- 修改
views.py中的视图函数名,避免和内置函数重名:
# 将原来的list视图改名即可,比如改为profile_list def profile_list(request): return render(request, 'livedata/list.html') def getProfiles(request): profiles = Profile.objects.all() return JsonResponse({"profiles": list(profiles.values())})
- 同步修改
urls.py中的路由配置,匹配修改后的视图函数名:
urlpatterns = [ path('', views.profile_list, name='list'), path('getProfiles', views.getProfiles, name='getProfiles') ]
修改完成后重启服务即可正常运行。
内容的提问来源于stack exchange,提问作者Jack Junior
相关产品推荐
相关产品推荐

