Django Ошибка атрибута при использовании сериализатора

Я хочу получить всю таблицу. Моя модель и сериализатор кажутся правильными, но я получаю следующую ошибку

Получили ошибку AttributeError при попытке получить значение для поля symbol на сериализаторе CompanySerializer. Поле сериализатора может быть названо неверно и не соответствовать какому-либо атрибуту или ключу экземпляра QuerySet. Оригинальный текст исключения был: 'QuerySet' object has no attribute 'symbol'.

Ниже приведена моя модель

models.py

from django.db import models


class Companies(models.Model):
    symbol = models.CharField(max_length=100)
    name = models.CharField(max_length=255)
    isin = models.CharField(max_length=255)

serializers.py

from rest_framework import serializers
from .models import Companies

class CompanySerializer(serializers.ModelSerializer):
    class Meta:
        fields = ['symbol', 'name', 'isin',]
        # fields = '__all__'
        model = Companies

Ниже представлено мое представление views.py

from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework.response import Response
from .models import Companies
from .serializers import CompanySerializer
from django.core.serializers import json


class companiesView(APIView):
    def get(self, request):

        companies = Companies.objects.filter(id=1)
        serializer = CompanySerializer(companies)

        # json_serializer = json.Serializer()
        # json_serialized = json_serializer.serialize(companies)

        response = Response()
        response.data = {
            'named' : serializer.data,
        }

        return response

Я не уверен, что вызывает эту проблему. Заранее спасибо.

companies - это queryset, поэтому то, что у вас есть - это список компаний. Если вы хотите, чтобы ваш сериализатор работал со списком объектов, просто добавьте many=True:

        companies = Companies.objects.filter(id=1)
        serializer = CompanySerializer(companies, many=True)
        #                                         ^^^ Add this

Другой способ - просто получить компанию с идентификатором 1, используя get вместо filter. В этом случае не нужно добавлять many=True, так как сериализатор работает с одним объектом:

        companies = Companies.objects.get(id=1)
        #                             ^^^ Use get instead of filter
        serializer = CompanySerializer(companies)
Вернуться на верх