Python全系列 教程
3567个小节阅读:5931.7k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
由于serializers类的引用关系的原因,serializers类中能只能有1方引入另1方,不如互相引入
如果业务需求,需要2个关系字段都序列化,那么就需要使用到 serializers.RelatedField 类,手动处理关系字段
serializers:
xxxxxxxxxx
from rest_framework import serializers
from .models import Classes, Student
class StudentRelateFiled(serializers.RelatedField):
# 重写to_representation方法,将外键关联的对象转换为指定的格式
def to_representation(self, value):
return {'id':value.id,'name':value.name,'age':value.age}
class ClassSerializer(serializers.ModelSerializer):
students = StudentRelateFiled(many=True,read_only=True)
class Meta:
model = Classes
fields = ['id','name','students']
class StudentSerializer(serializers.ModelSerializer):
# 通过外键关联的类,创建序列化器对象
classes = ClassSerializer()
class Meta:
model = Student
fields = ['id','name','age','sex','classes']
注意事项
- 上面3个类的先后顺序不能错
测试:
xxxxxxxxxx
GET http://127.0.0.1:8000/rest_app/classes2/1/
实时学习反馈
1. 在REST framework中如果业务需求,关系类中两端关系字段都需序列化,那么就需要使用到_____类,手动处理关系字段。
A serializers.RelatedField
B serializers.ModelSerializer
C serializers.RelatedModelSerializer
D serializers.RelatedSerializer
答案
1=>A