Django+DRF读取PostgreSQL数据时出现AttributeError问题求助
解决Django REST Framework中'str' object has no attribute '_meta'错误
错误原因
你的RegionsSerializer序列化器中,Meta类的model参数被赋值为字符串"france.models.Regions",而Django REST Framework的ModelSerializer要求传入实际的模型类对象,而非字符串形式的路径。当DRF尝试读取模型的_meta属性(用于获取字段元数据)时,字符串对象没有该属性,因此触发AttributeError。
修正方案
修改序列化器代码,先导入Regions模型类,再将model参数指向该类:
from rest_framework import serializers from .models import Regions # 导入本地的Regions模型 class RegionsSerializer(serializers.ModelSerializer): class Meta: model = Regions # 使用实际的模型类,替换字符串路径 fields = "__all__"
额外优化建议
你的视图集可以改用ModelViewSet简化代码,DRF会自动实现list、retrieve等标准动作,无需手动编写:
from rest_framework import viewsets from .models import Regions from .serializers import RegionsSerializer class RegionsView(viewsets.ModelViewSet): queryset = Regions.objects.all() serializer_class = RegionsSerializer
验证
修改后重新启动服务,访问http://127.0.0.1:1000/regions/即可正常获取数据。
内容的提问来源于stack exchange,提问作者Quantum-script
相关产品推荐
相关产品推荐

