Drf 序列化 ModelSerializer跨表取数据
2024-09-07 08:47:54
1、对于OneToOne、Foreignkey、choices字段可以使用source取出相关信息:
class CourseSerializer(serializers.ModelSerializer):
# choices字段
degree = serializers.CharField(source='get_degree_display')
# ForeignKey字段
teacher = serializers.CharField(source='teacher.name')
class Meta:
model = Course
fields = '__all__'
2、对于ManyToMany字段,例如:
class BookSerializers(serializers.ModelSerializer):
authors = serializers.SerializerMethodField()
publisher = serializers.CharField(source='publisher.title')
class Meta:
model = Book
fields = "__all__" # 可选择显示字段
# exclude = ['price',] # 排除字段
def get_authors(self,obj):
query_set = obj.authors.all()
return [{'name':obj.name} for obj in query_set]
{
"id": 2,
"authors": [
{
"name": "蒋勋"
}
],
"publisher": "长江出版社",
"title": "蒋勋说唐诗",
"pub_date": "2018-11-04",
"word_count": 12,
"price": 34
}
最新文章
- Redis命令拾遗四(集合类型)—包含简单搜索筛选商品设计实例。
- 10 个学习iOS开发的最佳网站(转)
- 蓝牙—RFCOMM协议
- Same Tree [LeetCode]
- vmware安装 ios10.8 过程
- 额定能量不得超过160Wh, 等同是多少mAh电池容量?
- c++学习(1)
- 1629 - Cake slicing(DP)
- jTemplates——学习(1)
- 详解C++ friend关键字
- for循环执行顺序
- 使用国内源解决Qt在线更新慢的问题
- ASP.NET Core 使用 URL Rewrite 中间件实现 HTTP 重定向到 HTTPS
- 升级CentOS5.6_X64 python2.4.3到2.7
- linux创建虚拟环境
- 爬虫不过如此(python的Re 、Requests、BeautifulSoup 详细篇)
- Git submodule 仓库中包含另外的仓库(子仓库)
- IIS SSL证书 指定的登录会话不存在,可能已被终止 HRESULT:0x80070520
- 010-docker-安装-elasticsearch:5.4.3
- Node学习笔记---初识Node