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

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

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

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

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

异常说明了一切。您需要一个 serializer_class 属性。你有 serializer.

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

查看:

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

我在视图中声明 post 方法并尝试在不序列化的情况下发送 post 数据时遇到此错误,如果您正在执行来自 javascript 的请求,我使用 JSON.stringify()

serializer = CitySerializer(queryset, many=True) 

上面一行应该替换为

serializer_class = CitySerializer(queryset, many=True)

你必须覆盖用户只是添加

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

并在 createViewList

permission_classes = [IsAdminUser]

错误说你定义了一个序列化器属性,你需要通过编写来更正 serializer_class 代码中的属性,

serializer_class = yourCreatedSerializer

将此代码段添加到您的 views.py 文件

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