DRF 没有更新数据库
DRF is not updating the database
这是模型:
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"
}
观点returns这个:
{
"id": 1,
"email": "myemail@mydomain.com",
"created_on": "2022-02-12",
"expires_on": "2022-03-14"
}
这是现有的数据。 expires_on
未更新为新值。
我没有收到错误也没有异常。就是不行。
从 expires_on 字段中删除 editable=False
。
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
这是模型:
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"
}
观点returns这个:
{
"id": 1,
"email": "myemail@mydomain.com",
"created_on": "2022-02-12",
"expires_on": "2022-03-14"
}
这是现有的数据。 expires_on
未更新为新值。
我没有收到错误也没有异常。就是不行。
从 expires_on 字段中删除 editable=False
。
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