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

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

原文由 user6781560 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 799
2 个回答

例外说明了一切。您需要一个 serializer_class 属性。你有 serializer

原文由 Cory Madden 发布,翻译遵循 CC BY-SA 3.0 许可协议

将此代码片段添加到您的 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',)

原文由 Aje 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题