我有PageSerializer
继承自DynamicFieldsModelSerializer
我从文档(http://django-rest-framework.org/api-guide/serializers.html#dynamically-modifiying-fields)复制的内容。要从我的通用视图初始化序列化器,我实现了get_serializer
。对于我的详细视图(继承自generics.RetrieveUpdateDestroyAPIView
),这工作正常,但是当我尝试在列表视图中初始化PageSerializer
(继承自generics.RetrieveUpdateDestroyAPIView
)时,我收到以下错误:
'PageList' should either include a 'serializer_class' attribute,
or use the 'model' attribute as a shortcut for automatically generating
a serializer class.
这是我的get_serializer实现(我在列表视图和详细视图中实现)
def get_serializer(self, instance=None, data=None, files=None, many=False, partial=False):
fields = None
if self.request.method == 'GET':
query_fields = self.request.QUERY_PARAMS.get("fields", None)
if query_fields:
fields = tuple(query_fields.split(','))
return PageSerializer(instance=instance, data=data, files=files, many=many, partial=partial, fields=fields)
从错误消息判断get_serializer似乎没有得到使用。是否有不同的方法来实现列表视图?我还没有设法找到关于如何使用get_serializer的任何提示。
答案 0 :(得分:1)
您看到的错误是因为您未在视图中声明serializer_class
或model
属性。如果您没有指定那些,则必须覆盖get_serializer_class()
以告知视图使用哪个序列化程序。
你也说过:
但是当我尝试在列表视图中初始化我的PageSerializer(继承自generics.RetrieveUpdateDestroyAPIView)时,我收到以下错误:
列表视图应该从ListCreateAPIView
之类的通用列表视图继承,而不是像RetrieveUpdateDestroyAPIView
这样的单个对象视图。