rest_framework 外键导出
时间: 2023-07-21 19:14:51 浏览: 135
如果您想在 Django Rest Framework 中导出外键关联对象的信息,您可以使用 Serializer 的嵌套关系来实现。
举一个例子,假设您有两个模型,一个是 `Book`,另一个是 `Author`,它们之间的关系是 多对一(即一个作者可以写多本书,但一本书只有一个作者)。
首先,您需要在 `Book` 模型中定义一个外键字段,指向 `Author` 模型:
```python
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
```
然后,您需要创建两个 Serializer 类,一个用于序列化 `Author` 模型,另一个用于序列化 `Book` 模型。在 `BookSerializer` 中,您可以使用 `AuthorSerializer` 的实例来序列化 `Book` 模型中的 `author` 属性。
```python
from rest_framework import serializers
from .models import Book, Author
class AuthorSerializer(serializers.ModelSerializer):
class Meta:
model = Author
fields = '__all__'
class BookSerializer(serializers.ModelSerializer):
author = AuthorSerializer()
class Meta:
model = Book
fields = '__all__'
```
现在,当您使用 `BookSerializer` 来序列化 `Book` 模型时,它将包含 `author` 属性的所有字段,以及 `author` 属性的所有字段,因为 `BookSerializer` 使用了 `AuthorSerializer` 的实例来序列化 `author` 属性。
您还可以使用 `depth` 属性来指定要序列化的外键关联深度,例如,如果您想要序列化 `Book` 模型及其关联的 `Author` 模型,您可以将 `depth` 属性设置为 `1`:
```python
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = '__all__'
depth = 1
```
这将序列化 `Book` 模型及其关联的 `Author` 模型的所有字段。
阅读全文