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']