首页 > 解决方案 > Wagtail API - 如何排除字段?

问题描述

在 Wagtail 文档中有一个关于从 API 中删除某些字段的部分(http://docs.wagtail.io/en/v2.2.1/advanced_topics/api/v2/usage.html#removing-all-default-fields)通过使用 URL 查询部分?fields=_,title。但这是从 API 消费者的角度完成的。我可以做些什么来排除服务器端的某些字段,所以无论用户在 URL 查询部分输入什么,他都无法获取某些字段。我知道如何排除我添加的字段,这只需删除它们api_fields列表即可。但也有一些“核心”领域,例如meta, id。我如何排除这些?

标签: pythonapidjango-rest-frameworkwagtail

解决方案


您可以使用自定义视图集注册页面的 api 端点,而不是使用默认的 PageAPIViewSet。

例如,如果您只想返回title页面的字段:

from wagtail.api.v2.views import PagesAPIViewSet, PageSerializer


class MyCustomPagesAPIViewSet(PagesAPIViewSet):
    base_serializer_class = PageSerializer

    body_fields = [
        'title',
    ]

    meta_fields = [
        'parent',
    ]


api_router.register_endpoint('pages', MyCustomPagesAPIViewSet)

推荐阅读