14

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

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

是什么导致代码似乎正确连接的断言错误?

4

6 回答 6

13

例外说明了它本身。你需要一个serializer_class属性。你有serializer.

于 2017-07-18T03:50:36.503 回答
2
serializer = CitySerializer(queryset, many=True) 

上面的行应该替换为

serializer_class = CitySerializer(queryset, many=True)
于 2020-12-12T06:47:58.517 回答
1

当我在视图中声明 post 方法并尝试在没有序列化的情况下发送 post 数据时出现此错误,如果您正在执行来自 javascript 的请求,我使用它解决了它JSON.stringify()

于 2020-02-15T19:22:43.603 回答
1

错误说您定义了一个序列化程序属性,您需要在代码中编写 serializer_class 属性进行更正,

serializer_class = yourCreatedSerializer
于 2021-07-02T05:49:26.903 回答
0

在这里,您使用了不同的模型名称:

看法:

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',)
于 2018-08-11T06:47:27.207 回答
0

你必须覆盖用户只是添加

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

并在 createViewList

permission_classes = [IsAdminUser]
于 2021-02-16T08:03:56.367 回答