小编Pav*_*eez的帖子

DRY 调用 serializer.data 不会返回模型的更新实例

我正在研究 的更新部分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)

python django django-serializer django-rest-framework

5
推荐指数
1
解决办法
967
查看次数

无法更改模型序列化器中的验证字段错误消息

我正在努力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

3
推荐指数
1
解决办法
2206
查看次数