'CityListViewSet' должен либо включать атрибут `serializer_class`, либо переопределять метод `get_serializer_class()`

Я предполагаю по ошибке в заголовке, еще раз здесь для ясности

'CityListViewSet' should either include a `serializer_class` attribute, 
or override the `get_serializer_class()` method.

что мой сериализатор не подключен к моему представлению, что должно быть в моем коде. Я не совсем уверен, где ошибка в этом. Интересно, кто-нибудь из вас видел что-то подобное?

Вот код.

Маршрутизатор:

router.register(r'city-list', CityListViewSet, base_name='city-list')

Посмотреть:

class CityListViewSet(viewsets.ReadOnlyModelViewSet):                 
    queryset = Venue.objects.values('city').distinct()
    serializer = CitySerializer(queryset, many=True)
    ordering_fields = ('city',)
    ordering = ('city',)

сериализатор:

class CitySerializer(serializers.ModelSerializer):    
    class Meta:
        model = City
        fields =('city',)

что может вызвать такую ​​​​ошибку утверждения с кодом, который, по-видимому, правильно подключен?


person Community    schedule 18.07.2017    source источник


Ответы (6)


Исключение говорит само за себя. Вам нужен атрибут serializer_class. У вас есть serializer.

person Cory Madden    schedule 18.07.2017
comment
лол, и я подтвердил то, что вы только что сказали в документах. Хорошо, ты прав, мой плохой, спасибо - person ; 18.07.2017
comment
это принесло новые проблемы, которые 'ListSerializer' object is not callable в настоящее время исследуются - person ; 18.07.2017
comment
Интересно. Вы уверены, что это связано? Потому что вы не используете ListSerializer нигде в своем примере кода. - person Cory Madden; 18.07.2017
comment
мой CityListViewSet наследуется от viewsets.ReadOnlyModelViewSet Интересно, может ли это быть причиной - person ; 18.07.2017
comment
Хм. Я только что взглянул на источник DRF и не вижу никаких ссылок на ListSerializer. - person Cory Madden; 18.07.2017
comment
это странно. Я собираюсь посмотреть, что я могу найти - person ; 18.07.2017
comment
Для нуба вроде меня, это значит в вашем CityListViewSet добавить serializer-class = CitySerializer - person Darpan; 05.11.2019

я получил эту ошибку, когда объявил метод публикации в поле зрения и попытался отправить данные публикации без сериализации, если вы выполняете запрос из javascript, я решил его, используя JSON.stringify()

person franciscorode    schedule 15.02.2020

Здесь вы использовали другое название модели:

Посмотреть:

class CityListViewSet(viewsets.ReadOnlyModelViewSet):     #(viewsets.ModelViewSet)             
queryset = City.objects.values('city').distinct()
serializer = CitySerializer(queryset, many=True)
ordering_fields = ('city',)
ordering = ('city',)

импорт -> из .serializers импортировать TaskSerializers,CitySerializer

сериализатор:

class CitySerializer(serializers.ModelSerializer):    
class Meta:
    model = City
    fields =('city',)
person Tarak Sivakoti    schedule 11.08.2018

вы должны переопределить пользователя, просто добавьте

from django.contrib.auth.models import User
from rest_framework.permissions import IsAdminUser

и в createViewList

permission_classes = [IsAdminUser]
person Ashwani Kumar    schedule 16.02.2021

ошибка говорит, что вы определяете атрибут сериализатора, вам нужно исправить, написав атрибут serializer_class в вашем коде,

serializer_class = yourCreatedSerializer
person Manoj Parmar    schedule 02.07.2021

serializer = CitySerializer(queryset, many=True) 

Вышеупомянутая строка должна быть заменена на

serializer_class = CitySerializer(queryset, many=True)
person maguluri    schedule 12.12.2020