ANTIO.TOP
首页
  • 运维

    • LDAP统一认证
    • 基于centos7打造个人服务器
    • 大数据之路
  • 开发

    • Django技巧
收藏家
开源项目
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Yue.Wu

GO AND BEYOND
首页
  • 运维

    • LDAP统一认证
    • 基于centos7打造个人服务器
    • 大数据之路
  • 开发

    • Django技巧
收藏家
开源项目
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 运维

  • 开发

    • Django技巧

      • 在admin中`list_filter`多级外键问题解决
      • 在admin中`list_display`如何展示外键字段
      • drf中如何设置返回Serializers自定义字段
        • 背景
        • 示例
          • models.py
        • views.py
        • 总结
  • 技术专栏
  • 开发
  • Django技巧
Yue.Wu
2020-10-10

drf中如何设置返回Serializers自定义字段

# 背景

在使用django rest framework进行接口编写时,使用serializers.ModelSerializer能非常方便快速的生成api接口,面对较为简单的场景时,我们不需要进行过多的定制,但如果接口不仅需要返回models中的字段,还需要返回一些其他的计算结果时,怎么处理呢?

# 示例

# models.py

from django.db import models

class Book(models.Models):
	name = models.CharField(max_length=255, verbose_name='书名')
	description = models.TextField(verbose_name='描述')
1
2
3
4
5

# views.py

from rest_framework import viewsets
from rest_framework import serializers

from .models import Book

# 仅展示默认字段
class BookSerializers(serializers.ModelSerializer):
	class Meta:
		model = Book
		fields = '__all__'

# 增加自定义字段
class BookSerializers(serializers.ModelSerializer):
	book_sale_count = serializers.SerializerMethodField()
	class Meta:
		model = Book
		fields = '__all__'

	def get_book_sale_count(self, obj):
		# 这里可以通过obj进行一些处理获取销售量然后返回
		book_sale_count = ...
		return book_sale_count
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 总结

通过serializers.SerializerMethodField可以实现字段的自定义,但需要注意的是,这个字段是只读的。 更多帮助 (opens new window)

#python#django
上次更新: 2022/01/20, 04:18:33
在admin中`list_display`如何展示外键字段

← 在admin中`list_display`如何展示外键字段

最近更新
01
docker-compose部署openldap
12-30
02
在admin中list_display如何展示外键字段
10-10
03
在admin中list_filter多级外键问题解决
10-08
更多文章>
Theme by Vdoing | Copyright © 2017-2022 Yue.Wu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式