Django基础教程(九十八)Django序列化之使用ModelSerializers:驯服数据怪兽:Django ModelSerializer,让你告别“搬砖式”序列化!

引言:从一个“悲伤”的故事开始

想象一下这个场景:你,一个充满激情的(可能头发已经不太多的)后端程序员,正在用Django REST framework (DRF) 构建一个API。

你有一个Book模型,长这样:

# models.py
class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=50)
    publish_date = models.DateField()
    price = models.DecimalField(max_digits=5, decimal_places=2)
    in_stock = models.BooleanField(default=True)

现在,你需要把这个模型的数据通过API返回成JSON。于是,你撸起袖子,开始“徒手”编写序列化器:

# serializers.py (手动版)
from rest_framework import serializers

class BookSerializer(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)
    title = serializers.CharField(max_length=100)
    author = serializers.CharField(max_length=50)
    publish_date = serializers.DateField()
    price = serializers.DecimalField(max_digits=5, decimal_places=2)
    in_stock = serializers.BooleanField(default=True)
    
    def create(self, validated_data):
        # 一堆创建对象的代码...
        return Book.objects.create(**validated_data)
    
    def update(self, instance, validated_data):
        # 一堆更新对象的代码...
        instance.title = validated_data.get('title', instance.title)
        # ... 为每个字段重复这个操作
        instance.save()
        return instance

有没有感觉血压上来了?

这简直就是“搬砖”式编程!模型里定义了一遍字段,序列化器里又几乎原封不动地重写了一遍。万一模型改了,这里还得跟着改。createupdate方法更是枯燥的模板代码。

说好的DRY(Don‘t Repeat Yourself)原则呢?说好的程序员要优雅呢?

别慌!你的救世主——ModelSerializer,已经骑着七彩祥云来救你了!

一、ModelSerializer是何方神圣?

简单来说,ModelSerializer就是一个能根据你的模型,自动帮你生成序列化器的“智能代码生成器”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值