Django rest framework Rest框架:详细页面上的详细信息比列表页面上的详细信息多

Django rest framework Rest框架:详细页面上的详细信息比列表页面上的详细信息多,django-rest-framework,Django Rest Framework,假设我有一个非常简单的ModelViewSet,其中的ModelSerializer有一个SerializerMethodField,计算速度很慢 class RasterViewSet(ModelViewSet): model = Raster serializer_class = RasterSerializer class RasterSerializer(ModelSerializer): ...fields... computed_info = Se

假设我有一个非常简单的ModelViewSet,其中的ModelSerializer有一个SerializerMethodField,计算速度很慢

class RasterViewSet(ModelViewSet):
    model = Raster
    serializer_class = RasterSerializer

class RasterSerializer(ModelSerializer):
    ...fields...

    computed_info = SerializerMethodField()

    class Meta:
        model = Raster
        fields = (...)

    def get_computed_info(self, object):
        # Lots of computation here.
现在我的问题是,在列表页面(映射为
/api/rasters/
)上,为所有光栅调用了
get\u computed\u info

我希望详细信息页面包含每个光栅最基本的字段,每个光栅的详细信息页面包含所有可用字段,包括慢速字段

对我来说,这似乎是一种非常常见的模式,在列表页面上只显示细节字段的子集,但我发现很难搜索解决方案


执行此操作的最佳方法是什么?

执行此操作的方法是使用两个不同的序列化程序:一个用于列表视图,另一个用于详细信息视图

通过覆盖
get\u serializer\u class
并根据特定条件返回不同的序列化程序,可以控制在视图上使用的序列化程序。在您的情况下,您可能需要测试
view.action
,查看它是
create
(在列表上发布)还是
list
(在列表上获取),并且在这种情况下只返回列表序列化程序

或者,您可以使用提供的,它将此功能打包到可在您的视图集上使用的mixin中