字段映射 Source

一. 字段映射 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": "老杨"
    }
]

posted @ 2024-04-04 11:17  codegjj  阅读(9)  评论(0)    收藏  举报