Django中AttributeError: 'tuple' object has no attribute 'model'错误求助
Django错误解决:AttributeError: 'tuple' object has no attribute 'model'
问题定位
错误日志中明确指向queryset.model._meta.object_name.lower(),说明代码里的queryset并非DRF所需的QuerySet对象,而是一个元组。查看你的views.py就能发现问题所在:
class UserProfileViewSet(viewsets.ModelViewSet): queryset = UserProfile.objects.all(), # 此处多了一个逗号 serializer_class = UserProfileSerializer class CoursesViewSet(viewsets.ModelViewSet): queryset = Courses.objects.all(), # 此处也多了一个逗号 serializer_class = CoursesSerializer
在Python中,赋值语句末尾加逗号会将变量转为元组,因此queryset不再是预期的QuerySet,而是(UserProfile.objects.all(),)这类元组结构,自然不存在model属性。
修复方法
直接移除两个queryset行末尾的逗号即可:
修改后的views.py代码:
from django.shortcuts import render from rest_framework import viewsets from user_profile.models import Courses, UserProfile from user_profile.serializers import UserProfileSerializer, CoursesSerializer class UserProfileViewSet(viewsets.ModelViewSet): queryset = UserProfile.objects.all() serializer_class = UserProfileSerializer class CoursesViewSet(viewsets.ModelViewSet): queryset = Courses.objects.all() serializer_class = CoursesSerializer
额外提示
另外检查models.py中的imgUrl = models.CharField(),CharField必须指定max_length参数,否则会触发数据库迁移错误,建议修改为:
imgUrl = models.CharField(max_length=255, blank=True)
内容的提问来源于stack exchange,提问作者Tanmoy Saha
相关产品推荐
相关产品推荐

