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?