DRF Django: Как изменить значение перед сохранением

class Pet(models.Model):
    date_of_birth = models.DateField()

class PetSerializer(serializers.ModelSerializer):
    class Meta:
        model = Pet
        fields = "__all__"

Ныне, когда я пытаюсь сделать

curl -X POST -H "Content-Type: application/json" \
 -d '{
"date_of_birth":"2021-08-29T00:46:27.103Z"
}' http://localhost:8025/api/dob/

Я получаю

{"date_of_birth":["Date has wrong format. Use one of these formats instead: YYYY-MM-DD."]}

Как управлять этим, потому что я буду получать входные данные только в формате 2021-08-29T00:46:27.103Z

Добавьте input_formats к полю даты:

class PetSerializer(serializers.ModelSerializer):
    date_of_birth = serializers.DateField(input_formats=['%Y-%m-%dT%H:%M:%S.%fZ'])

    class Meta:
        model = Pet
        fields = ('date_of_birth', ...)

Документы в https://www.django-rest-framework.org/api-guide/fields/#datefield

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