我正在研究 的更新部分BlogSerializer。当我调用返回旧数据而不是新数据时,传递给序列化器的实例会在数据库中更新,blog_serializer.data但当我刷新浏览器时,将显示最新数据。我已经检查过更新时没有错误。那么如何才能让最新更新的数据显示在我的可浏览 API 中
序列化器.py
class UserSerializer(ModelSerializer):
class Meta:
model = User
fields = '__all__'
class BlogFilesSerializer(ModelSerializer):
created_at = serializers.SerializerMethodField()
updated_at = serializers.SerializerMethodField()
class Meta:
model = BlogFilesModel
fields = ('blog_files_id', 'blog', 'path',
'created_at', 'updated_at')
extra_kwargs = {
'path': {
'error_messages': {
'blank': 'File is required'
},
},
'blog' : {
'error_messages': {
'blank': 'blog must be selected'
},
}
}
def get_created_at(self, obj):
formatted_date = obj.created_at.strftime("%d-%m-%Y")
return formatted_date
def get_updated_at(self, obj):
formatted_date = obj.created_at.strftime("%d-%m-%Y") …Run Code Online (Sandbox Code Playgroud) 我正在努力ModelSerializer解决以下问题。
1)无法验证.validate(self, data)方法,因为我想返回不起作用的自定义验证器消息。
模型.py
class BlogModel(models.Model):
BLOG_STATUS = (
('PUBLISH', 'Publish'),
('DRAFT', 'Draft'),
)
blog_id = models.AutoField(primary_key=True)
user = models.ForeignKey(
User, on_delete=models.CASCADE, related_name='blogs')
title = models.CharField(max_length=255)
content = models.TextField(blank=True, null=True)
status = models.CharField(max_length=7, choices=BLOG_STATUS)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta():
db_table = 'blogs'
verbose_name = 'Blog'
verbose_name_plural = 'Blogs'
def __str__(self):
return self.title
Run Code Online (Sandbox Code Playgroud)
序列化器.py
import datetime
from django.contrib.auth.models import User
from django.utils.timezone import now
from rest_framework import serializers
from rest_framework.serializers import ModelSerializer,Serializer
from blogs.models …Run Code Online (Sandbox Code Playgroud) python django django-validation django-serializer django-rest-framework