Ошибка атрибута в значении для поля в оставшейся структуре сериализатора django

Я получаю следующую ошибку:

AttributeError: Got AttributeError when attempting to get a value for field `city` on serializer `SearchCitySerializer`

хотя мои сериализаторы верны, если я что-то явно не пропустил.

Вот моя модель:

class SearchCity(models.Model):
    city = models.CharField(max_length=200)

вот мой сериализатор

class SearchCitySerializer(serializers.ModelSerializer):
    class Meta:
        model = SearchCity
        fields = ('pk','city')

*** Я попробовал сериализатор без ПК в поле, и он все еще не удалось

и здесь это используется в представлении:

 from serializers import SearchCitySerializer

 def get(self, request, format=None):
        searchcityqueryset = SearchCity.objects.all()
        serializedsearchcity = SearchCitySerializer(searchcityqueryset)

        return Response({
            'searchcity': serializedsearchcity.data,
        })

полная ошибка, которую я получаю:

File "/home/rickus/Documents/softwareProjects/211hospitality/suitsandtables/backend/virtualsuits/suitsandtables/suitsandtablessettingsapp/views.py", line 37, in get
    'searchcity': serializedsearchcity.data,
  File "/home/rickus/Documents/softwareProjects/211hospitality/suitsandtables/backend/virtualsuits/local/lib/python2.7/site-packages/rest_framework/serializers.py", line 537, in data
    ret = super(Serializer, self).data
  File "/home/rickus/Documents/softwareProjects/211hospitality/suitsandtables/backend/virtualsuits/local/lib/python2.7/site-packages/rest_framework/serializers.py", line 262, in data
    self._data = self.to_representation(self.instance)
  File "/home/rickus/Documents/softwareProjects/211hospitality/suitsandtables/backend/virtualsuits/local/lib/python2.7/site-packages/rest_framework/serializers.py", line 491, in to_representation
    attribute = field.get_attribute(instance)
  File "/home/rickus/Documents/softwareProjects/211hospitality/suitsandtables/backend/virtualsuits/local/lib/python2.7/site-packages/rest_framework/fields.py", line 462, in get_attribute
    raise type(exc)(msg)
AttributeError: Got AttributeError when attempting to get a value for field `city` on serializer `SearchCitySerializer`.
The serializer field might be named incorrectly and not match any attribute or key on the `QuerySet` instance.
Original exception text was: 'QuerySet' object has no attribute 'city'.
[28/Feb/2018 02:41:43] "GET /api/dependancy/suitsadmin/settings/ HTTP/1.1" 500 20823

База данных в настоящее время пуста, так как никаких данных в базе данных нет вообще

1 ответ

Решение
serializedsearchcity = SearchCitySerializer(searchcityqueryset)

изменить на

serializedsearchcity = SearchCitySerializer(searchcityqueryset, many=True)

Чтобы сериализовать набор запросов или список объектов вместо одного экземпляра объекта, вы должны передать many=True флаг при создании экземпляра сериализатора. Затем вы можете передать набор запросов или список объектов для сериализации.

Работа с несколькими объектами

Другие вопросы по тегам