简体   繁体   English

序列化程序中的数据始终为空

[英]data in serializer is always empty

I have following serializer:我有以下序列化程序:

class AdminSerializer(serializers.Serializer):
    def validate(self, data):
        user = data.get("user_pk")
        total_licenses = data.get("total_licenses")
        #here i do some validation with the vars

But my data is always empty.但是我的数据总是空的。 This is part of my view这是我观点的一部分

serializer_class = self.get_serializer_class()
serializer = serializer_class(
    data=self.request.data,
)
serializer.is_valid(raise_exception=True)

This is my unit test request:这是我的单元测试请求:

response = self.client.patch(
    url,
    data={"user_pk": self.user.pk, "total_licenses": 3},
)

Why is my 'data' always empty?为什么我的“数据”总是空的?

You need to call serializer.save() before you can access .data attribute on a serializer.您需要先调用serializer.save()才能访问序列化程序上的.data属性。 Otherwise, you can access .validated_data attribute on your serializer否则,您可以访问序列化程序上的.validated_data属性

You have to explicitly specify fields in your serializer:您必须在序列化程序中明确指定字段:

class AdminSerializer(serializers.Serializer):
  user_pk = serializers.IntegerField()
  total_licenses = serializers.IntegerField()


  def validate(self, data):
     ...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM