#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»)