' CityListViewSet'应该包含`serializer_class`属性,或者覆盖`get_serializer_class()`方法

时间:2017-07-18 03:44:54

标签: python django-rest-framework assertion django-rest-viewsets

我假设标题中的错误,为了清晰起见再次在这里

'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',)

什么是导致这样的断言错误,代码似乎正确接线?

6 个答案:

答案 0 :(得分:2)

例外说它本身。您需要serializer_class属性。你有serializer

答案 1 :(得分:1)

如果在视图中声明了post方法并尝试发送不进行序列化的post数据,则出现此错误,如果您是从javascript进行请求,则使用JSON.stringify()

解决了

答案 2 :(得分:0)

您在这里使用了其他型号名称:

视图:

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

import->从.serializers导入TaskSerializers,CitySerializer

序列化器:

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

答案 3 :(得分:0)

serializer = CitySerializer(queryset, many=True) 

以上行应替换为

serializer_class = CitySerializer(queryset,many = True)

答案 4 :(得分:0)

您必须覆盖刚刚添加的用户

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

并在 createViewList 中

permission_classes = [IsAdminUser]

答案 5 :(得分:0)

错误说你定义了一个序列化器属性,你需要用写作来纠正 代码中的 serializer_class 属性,

serializer_class = yourCreatedSerializer