drf外键序列化
前言
在Django REST Framework(DRF)中,外键字段可以通过序列化器进行序列化和反序列化。
1、模型感受一下:
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
def __str__(self):
return self.title
2、序列化
在上面的示例中,Book模型有一个外键字段指向Author模型。在BookSerializer中,我们可以使用source参数来指定外键字段对应的关联模型中的字段。例如,在这个例子中,我们使用source='author.name'将作者名字的字段映射到author_name字段。
在AuthorSerializer中,我们包含了一个嵌套的BookSerializer,以便序列化与该作者相关联的所有书籍。
from rest_framework import serializers
from myapp.models import Author, Book
class BookSerializer(serializers.ModelSerializer):
author_name = serializers.CharField(source='author.name')
class Meta:
model = Book
fields = ['id', 'title', 'author_name']
class AuthorSerializer(serializers.ModelSerializer):
books = BookSerializer(many=True)
class Meta:
model = Author
fields = ['id', 'name', 'books']
本文阅读量 次