快速入手-基于Django-rest-framework的ModelSerializer模型序列化器(三)

发布于:2025-04-01 ⋅ 阅读:(59) ⋅ 点赞:(0)

1、基础代码

快速入手-基于Django-rest-framework的serializers序列化器(二)-CSDN博客

2、基于第一步的代码改成模型序列化 

3、只需要修改serializer.py文件即可

from django.shortcuts import render, HttpResponse
from rest_framework.views import APIView

from .models import Link

from rest_framework import serializers


class LinkSerializerBak(serializers.Serializer):
    # 对外展示或操作的字段,或者转换后的字段(比如name对外展示为mingzi)
    id = serializers.CharField(max_length=300)
    mingzi = serializers.CharField(max_length=300, source="name")
    link = serializers.CharField(max_length=100)
    sorting = serializers.IntegerField(default=100)

    # 新增保存数据过程
    def create(self, validated_data):
        new_link = Link.objects.create(**self.validated_data)
        return new_link

    # 更新保存数据过程
    def update(self, instance, validated_data):
        Link.objects.filter(pk=instance.id).update(**validated_data)
        gengxin = Link.objects.get(pk=instance.pk)
        return gengxin

################模型序列化###########################
# 和模型直接耦合,确定不灵活,上面的是自己写
class LinkSerializer(serializers.ModelSerializer):
    # 自定义接口字段名称source="name"是真实的,mingzi是解耦的名称
    mingzi = serializers.CharField(max_length=300, source="name")

    class Meta:
        # 指定关联哪个模型集
        model = Link
        # fields = "__all__"
        # 排除去掉哪些字段
        exclude = ["gid", "name"]

4、其他配置、视图等都不需要修改

5、测试方法参考第二节的测试即可。 


网站公告

今日签到

点亮在社区的每一天
去签到