Django rest framework, частичное обновление даты

У меня есть модель:

class UsaInflation(models.Model):
    date = models.DateField()
    percent = models.DecimalField(max_digits=6, decimal_places=2)

По умолчанию я ожидаю, что поле date у каждой записи будет иметь свой месяц и год, но день всегда будет 1 Мне нужно сделать api, которое возвращало бы каждую запись в примерно таком виде:

{
    "id": 1,
    "year": 2021,
    "month": 3,
    "percent": "2.60"
}

Для этого я написал ViewSet и Serializer:

class UsaInflationSerializer(serializers.ModelSerializer):
    year = fields.IntegerField(source='date.year')
    month = fields.IntegerField(source='date.month')
    
    class Meta:
        model = UsaInflation
        fields = ['id', 'year', 'month', 'percent']
        read_only_fields = ['id']


class UsaInflationViewSet(viewsets.ModelViewSet):
    serializer_class = UsaInflationSerializer
    queryset = UsaInflation.objects.all()

И впринципе, данный код работает, но только когда я хочу просмотреть записи, если я для какой-нибудь записи вызываю PATCH/PUT запрос (В url настройки событий для разных мметодов выглядят так:

{
    'get': 'retrieve',
    'put': 'update',
    'patch': 'partial_update',
    'delete': 'destroy',
}

Так вот, при изменении/добавлении какой-нибудь записи я получаю ошибку: введите сюда описание изображения Как я понимаю, она связана с обновлением поля с датой. Вопрос: Как мне при таком подходе при передаче только полей year, month, percent, сделать так, чтобы запрос обрабатывался корректно и без ошибок, а в поле date записывался новый месяц и год, но день всегда был равен 1?


Ответы (0 шт):