【问题标题】:Posting and reading metadata with D jango rest framework json api使用 D jango rest framework json api 发布和读取元数据
【发布时间】:2021-05-28 09:04:57
【问题描述】:

我正在使用 Django REST 框架 json api,我正在尝试在我的 JSON:API POST 请求中发布一些元数据。

let user = {
    data: {
        type: "User",
        attributes: {
            type: "individual",
            status: "active"
        },
        relationships: {
            individual: {
                data: {
                    type: "Individual",
                    id: applicant.id
                }
            }
        },
        meta: {
            message: vm.createApplicantAccountMessage 
        } // <------ This is the meta info
    }
};
JsonApiService.create('users', user);

但我不知道如何在我的视图集 perform_create 函数中阅读它。

class UserViewSet(BaseViewSet):
    queryset = User.objects.none()
    serializer_class = UserSerializer
    filterset_class = UserFilterSet

    def perform_create(self, serializer):
        # TODO: Find out how to read what is inside the meta message here

任何帮助表示赞赏!

【问题讨论】:

    标签: django django-rest-framework json-api


    【解决方案1】:

    我假设您的 BaseViewSet 继承自 viewsets.ModelViewSet 或至少是 mixins.CreateModelMixin 然后您可以覆盖 create 方法。例如;

    class UserViewSet(BaseViewSet):
        queryset = User.objects.none()
        serializer_class = UserSerializer
        filterset_class = UserFilterSet
    
        def create(self, request, *args, **kwargs):
            print(request.data) # <- you can see coming data with request.data
            serializer = self.get_serializer(data=request.data)
            serializer.is_valid(raise_exception=True)
            self.perform_create(serializer)
            # if you do not have custom logic then you can simply return super()
            # return super().create(request, *args, **kwargs)
            return Response(serializer.data, status=status.HTTP_201_CREATED)
    

    【讨论】:

      猜你喜欢
      • 2016-02-10
      • 2018-07-25
      • 2015-10-08
      • 2015-04-17
      • 2020-06-20
      • 2018-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多