django drf to_representation

使用场景

1.需要对结果的中的某个字段进行进一步的处理;

2.模型类中没有的字段,添加到结果中进行响应;

例子

python 复制代码
from django.db import models


class TestModel(models.Model):
   name = models.CharField(_("名称"), max_length=50, null=True, blank=True, default="")
   status = models.CharField(_("状态"), max_length=10, null=True)
   create_by = models.ForeignKey(to='users.User', on_delete=models.SET_NULL, null=True)
   liked_by = models.ManyToManyField(to='users.User')


from rest_framework import serializers


class TestSerializer(serializers.ModelSerializer):
   class Meta:
       model = TestModel
       fields = '__all__'

   def to_representation(self, instance):
       # 调用父类获取当前序列化数据,instance代表每个对象实例obj
       data = super().to_representation(instance)
       # 对原字段的值作修改
       data['create_by'] = instance.create_by.name  # 显示用户表的名称,而不是用户ID
       # 添加新的字段--model没有的字段
       data['total_likes'] = instance.liked_by.count()  # 统计数量
       return data
相关推荐
李昊哲小课2 分钟前
Python 数据结构示例
开发语言·数据结构·python
Qeesun5 分钟前
UV 环境管理指南 / 如何将旧项目接入 UV
linux·python·uv
MoRanzhi12035 分钟前
Pillow 图像分割、切片与拼接处理
图像处理·人工智能·python·计算机视觉·pillow·图像拼接·网格分块
Ulyanov6 分钟前
基于Celery的分布式雷达电子战仿真系统:架构设计与实战指南
分布式·python·队列处理·雷达电子战仿真
溪海莘7 分钟前
如何使用uv创建并管理一个新的空白的python项目?
开发语言·python·uv
曲辕RPA8 分钟前
RPA多网页并行自动化深度对比:影刀的坑与曲辕的解法
python·ai·自动化·rpa
爱打代码的小林11 分钟前
用 LangChain 解析大模型输出
java·python·langchain·大模型
3DVisionary18 分钟前
装配检测丨蓝光三维扫描技术用于精密零部件3D检测与虚拟装配
python·3d·应变测量·金属3d打印·dic精度检验方法·各向异性·xtom蓝光三维扫描仪扫描
进击的小头23 分钟前
第7篇:动态规划的数值求解算法
python·算法·动态规划
喵手25 分钟前
Python爬虫实战:Playwright 监听快手直播间,自动化采集实时在线与礼物数据!
爬虫·python·爬虫实战·快手·playwright·零基础python爬虫教学·采集快手直播间数据