DRF не обновляет базу данных

Вот модель:

from django.db import models
from datetime import datetime, timedelta


# Create your models here.

def set_expiration():
    return datetime.today().date() + timedelta(days=30)


class Customer(models.Model):
    email = models.EmailField(max_length=254, unique=True)
    created_on = models.DateField(auto_now_add=True)
    expires_on = models.DateField(editable=False, default=set_expiration())

    def __str__(self):
        return self.email

А это вид:

@api_view(['POST'])
def update_customer(request):
    try:
        customer = Customer.objects.get(email=request.data['email'])
    except ObjectDoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)

    serializer = CustomerSerializer(instance=customer, data=request.data)

    if serializer.is_valid(raise_exception=True):
        serializer.save()

    return Response(serializer.data)

И серилизатор:

from rest_framework import serializers
from .models import Customer


class CustomerSerializer(serializers.ModelSerializer):
    class Meta:
        model = Customer
        fields = '__all__'

В данный момент у меня есть запись в базе данных с expires_on, установленная в 2022-03-14, и я хочу обновить ее до 2024-12-12, поэтому я вызываю конечную точку со следующими данными:

{
    "email": "myemail@mydomain.com",
    "expires_on": "2024-12-12"
}

Представление возвращает следующее:

{
    "id": 1,
    "email": "myemail@mydomain.com",
    "created_on": "2022-02-12",
    "expires_on": "2022-03-14"
}

Это существующие данные. expires_on это не обновленное новое значение.

Я не получаю ни ошибки, ни исключения. Это просто не работает.

Удалите editable=False из поля expires_on.

class Customer(models.Model):
    email = models.EmailField(max_length=254, unique=True)
    created_on = models.DateField(auto_now_add=True)
    expires_on = models.DateField(default=set_expiration())

    def __str__(self):
        return self.email
Вернуться на верх