Использование класса ModelSerializer, вложенного в класс Serilaizer, для валидации поля и возврата объекта

Я пытаюсь проверить вводимые пользователем данные, передавая их классу Serializer. Указанный класс сериализатора не имеет моделей и наследуется от serializers.Serializer.

Я пытаюсь проверить наличие входных данных в классе ModelSerializer под названием Country. Мой код продолжает возвращать следующую ошибку: value already exits.

То, что я пробовал:

  • валидация на уровне поля с помощью метода под названием: validate_country - который работает.

Я хотел узнать, можно ли добиться того же самого, вызывая класс сериализатора Country изнутри ValidationSerializer.

models.py

class Country(models.Model):
    iso_code = models.CharField(max_length=2, unique=True)
    name = models.CharField(max_length=255)

    class Meta:
        ordering = ("name",)
        verbose_name_plural = _("Countries")

    def __str__(self):
        return self.name

serializers.py

class CountrySerializer(serializers.ModelSerializer):
    class Meta:
        model = Location
        fields = ("id", "name", "iso_code")


class ValidationSerializer(serializers.Serializers):
    
    # this serializer does not have a model and only want to validate inputs provided by user

    country = ListField(child=CountrySerializer(many=False, required=False), default=list, allow_empty=True)
    
    # sample country input looks like: {"country": ["US", "CA", "GB"]}
    # I want to pass the country codes to CountrySerializer to validate if the country codes exists and return a seriliazed object

views.py

class MyView(GenericAPIView):

    def get(self):
        country=request.query_params['country'].split(",")
        ser = ValidationSerializer(data=country)
        if not ser.is_valid()
            return Response(ser.errors)
        else:
            #process request

Спасибо!

Вернуться на верх