如何在Django Generic Views开发的API中隐藏status process字段仅展示topic
实现方式
不需要改动Generic View的现有逻辑,只要调整TopicSerializer的字段配置就能实现需求。DRF的ModelSerializer会严格按照序列化器Meta类里声明的字段范围做输出,不在声明列表里的模型字段不会被返回给前端。
具体代码修改
把原来序列化器里的全量字段配置换掉,显式列出来要展示的topic字段:
class TopicSerializer(serializers.ModelSerializer): class Meta: model = Topics # 只保留需要展示的topic字段,其余包括status、process在内的字段都会被自动过滤 fields = ('topic',)
原有的ListCreateTopic视图不需要任何改动,它会直接调用绑定的序列化器完成字段过滤:
class ListCreateTopic(generics.ListCreateAPIView): queryset = models.Topics.objects.order_by('-time_stamp')[:5] serializer_class = serializers.TopicSerializer
注意事项
- 后续如果要新增返回字段,直接在
fields的元组里加上对应字段名就行 - 也可以用
exclude = ('status', 'process')的写法直接排除不需要的字段,但这种写法会在模型新增字段时自动把新字段纳入返回范围,容易出现接口字段意外暴露的问题,逐一枚举需要保留的字段是更稳妥的做法
内容的提问来源于stack exchange,提问作者Jose
相关产品推荐
相关产品推荐

