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
相关推荐
星川皆无恙11 分钟前
Python豆瓣电影数据分析可视化系统:爬虫采集+数据清洗+可视化大屏完整项目
人工智能·爬虫·python·数据分析
ttwuai14 分钟前
XYGo Admin 扩展开发:WebSocket 事件注册与实时推送实战
python·websocket·网络协议·golang·后台框架
Metaphor69215 分钟前
使用 Python 旋转 PDF 页面
python·pdf
2601_9611940216 分钟前
考研资料电子版|下载|pdf
java·python·考研·eclipse·django·pdf·pygame
盼小辉丶19 分钟前
OpenCV-Python实战(26)——复杂场景下的实时物体检测与跟踪
python·opencv·计算机视觉
如烟花的信页20 分钟前
某管理服务平台点选逆向分析
javascript·爬虫·python·js逆向
啦哈拉哈24 分钟前
【Python】知识点零碎学习7
python·学习·算法
宝贝儿好26 分钟前
【NLP】第八章:项目实操案例:文本情感分析
人工智能·python·深度学习·算法·自然语言处理
Java面试题总结34 分钟前
Python 文件基本操作
大数据·人工智能·python