Проблема в Django 5.0.2 и django_rest_framework

hi ребята у меня проблема с чтением sql данных из postgresql с помощью django. Я создал свою модель с помощью manage.py 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__"


мой набор видов:

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

Можете ли вы помочь мне с проблемой Thnx all

Сериализатор Meta не может работать со строкой в качестве модели, а должен ссылаться на класс модели, так:

from france.models import Regions
from rest_framework import serializers


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

Примечание: обычно модели Django присваивается сингулярное имя, поэтому Region вместо Regions.

Если ввести имя модели следующим образом, ошибка не появится

Models.py

from rest_framework import serializers
from .models import Regions

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

Ошибка заключается в мета класса в вашей модели "Регионы", вот правильный подход

from rest_framework import serializers
from .models import Regions

class RegionsSerializer(serializers.ModelSerializer):
    class Meta:
       model = Regions
       fields = "__all__"
Вернуться на верх