一. 字段映射 Source
1. 字段映射
# models.py
class Book(models.Model):
name = models.CharField(max_length=60)
publish = models.CharField(max_length=60)
# serialize.py 序列化类文件
class BookSerialize(serializers.Serializer):
name = serializers.CharField()
publish = serializers.CharField()
# get 请求查询返回数据
[
{
"name": "name1",
"publish": "publish1"
}
]
"""--------------------使用 Source--------------------"""
# serialize.py 序列化类文件
class BookSerialize(serializers.Serializer):
# 在这里使用 source 映射
book_name = serializers.CharField(source='name')
publish = serializers.CharField(
# get 请求查询返回数据
[
{
"book_name": "name1",
"publish": "publish1"
}
]
2. 方法映射
"""--------------------使用 Source--------------------"""
# models.py
class Book(models.Model):
name = models.CharField(max_length=60)
publish = models.CharField(max_length=60)
# 1. 这里写一个方法
def sb_name(self):
return self.name + '哈哈哈哈哈哈哈'
# serialize.py 序列化类文件
class BookSerialize(serializers.Serializer):
# 2. 在这里使用 source 映射 models.py 中的方法名
# 字段名可以是 book_name 也可以是 name(和 models.py 字段对应)。
book_name = serializers.CharField(source='sb_name')
publish = serializers.CharField()
# get 请求查询返回数据
[
{
# 3. 这里就被修改了
"book_name": "name1哈哈哈哈哈哈哈",
"publish": "publish1"
}
]
3. 外键映射
# models.py
class Book(models.Model):
name = models.CharField(max_length=60)
publish = models.CharField(max_length=60)
# 1. 外键
author = models.ForeignKey(to='Author', on_delete=models.CASCADE)
class Author(models.Model):
name = models.CharField(max_length=60)
age = models.IntegerField()
"""--------------------使用 Source--------------------"""
# serialize.py 序列化类文件
class BookSerializers(serializers.Serializer):
# 2. 进行外键映射
author_name = serializers.CharField(source='author.name', required=False)
# get 请求查询返回数据
[
{
...
# 3. 结果显示
"author_name": "老杨"
}
]