嗨,伙计们,我有问题从postgresql用django读取SQL数据. 我用www.example.com inspectdb创建了我的模型 命令来自现有数据库.

我的模型:

from django.db import models

class Regions(models.Model):
    code = models.CharField(unique=True, max_length=4)
    capital = models.CharField(max_length=10)
    name = models.TextField(unique=True)

    class Meta:
        managed = False
        db_table = "regions"

我的序列化器:

from rest_framework import serializers


class RegionsSerializer(serializers.ModelSerializer):
    class Meta:
        model = "france.models.Regions"
        fields = "__all__"


帖子主题:Re:Колибри

from rest_framework import viewsets
from rest_framework.response import Response
from .models import Regions
from .serializers import RegionsSerializer


class RegionsView(viewsets.ViewSet):
    def list(self, request):
        regions = Regions.objects.all()
        serializer = RegionsSerializer(regions, many=True)
        return Response(serializer.data)

我得到的错误:

AttributeError at /regions/
'str' object has no attribute '_meta'
Request Method: GET
Request URL:    http://127.0.0.1:1000/regions/
Django Version: 5.0.4
Exception Type: AttributeError
Exception Value:    
'str' object has no attribute '_meta'
Exception Location: C:\Projects\play_ground\python\django_one\venv\Lib\site-packages\rest_framework\utils\model_meta.py, line 35, in get_field_info
Raised during:  france.views.RegionsView
Python Executable:  C:\Projects\play_ground\python\django_one\venv\Scripts\python.exe
Python Version: 3.12.2
Python Path:    
['C:\\Projects\\play_ground\\python\\django_one',
 'C:\\Users\\safkh\\AppData\\Local\\Programs\\Python\\Python312\\python312.zip',
 'C:\\Users\\safkh\\AppData\\Local\\Programs\\Python\\Python312\\DLLs',
 'C:\\Users\\safkh\\AppData\\Local\\Programs\\Python\\Python312\\Lib',
 'C:\\Users\\safkh\\AppData\\Local\\Programs\\Python\\Python312',
 'C:\\Projects\\play_ground\\python\\django_one\\venv',
 'C:\\Projects\\play_ground\\python\\django_one\\venv\\Lib\\site-packages']
Server time:    Fri, 05 Apr 2024 08:19:46 +0000

你能帮我解决问题吗?

推荐答案

串行化器Meta不能使用字符串作为模型,而是应该引用模型类,所以:

from france.models import Regions
from rest_framework import serializers


class RegionsSerializer(serializers.ModelSerializer):
    class Meta:
        model = Regions
        fields = '__all__'

Note:通常Django模型的名称为singular,所以Region而不是Regions.

Python-3.x相关问答推荐

Django 5.0.2和django_rest_framework

是否有必要使用Threads()中的args显式地将共享变量传递给Python中的线程函数或直接访问它?

基于另一个数据帧计算总和

在REPLACE INTO中引用变量会抛出sqlite3.OperationalError

Pytest顺序测试A,然后测试B,然后再测试A

如何从形状汇总图中提取实际值

DynamoDB - boto3 - batch_write_item:提供的关键元素与架构不匹配

Python BeautifulSoup:在 Select 语句中排除其他标签

Semaphore信号量 Python 的工作原理

python用户输入5个偶数并打印最大的

`pyspark mllib` 与 `pyspark ml` 包

Python - 如何从同一台客户端机器运行多个Flask应用程序

Python:遍历子列表

Python heapify() 时间复杂度

Tensorflow:ImportError:libcudnn.so.7:无法打开共享对象文件:没有这样的文件或目录

作为函数对象属性的 __kwdefaults__ 有什么用?

Python3 的超级和理解-> TypeError?

为什么 2to3 将 mydict.keys() 更改为 list(mydict.keys())?

将字符串拆分为最大长度 X 的片段 - 仅在空格处拆分

Python,Docker - ascii编解码器无法编码字符