Использование класса 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
Спасибо!