данные в сериализаторе всегда пусты

#python #django

#python #django

Вопрос:

У меня есть следующий сериализатор:

 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
  

Но мои данные всегда пусты. Это часть моего представления

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

Это мой запрос на модульный тест:

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

Почему мои «данные» всегда пусты?

Ответ №1:

Вы должны явно указать поля в вашем сериализаторе:

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


  def validate(self, data):
     ...
  

Ответ №2:

Вам нужно позвонить serializer.save() , прежде чем вы сможете получить доступ .data к атрибуту в сериализаторе. В противном случае вы можете получить доступ .validated_data к атрибуту в вашем сериализаторе

Комментарии:

1. Вы имеете в виду, что добавление serializer.save() после is_valid() — это мое мнение? Это не работает

2. Вы возвращаете данные из своей validate функции?

3. Извините, если мой вопрос был неясен, но данные в моем сериализаторе всегда пусты.

4. Да, но проблема в том, что мои данные в моей функции проверки пусты. Пример получения user = data.get(«user_pk»)