我们可以使用Django REST框架中的Serializer来实现这个任务。首先创建两个模型,然后创建一个Serializer,该Serializer使用Django内置的Serializer类。在Serializer中,使用fields选项来指定要序列化的数据字段。接下来,在视图中,使用queryset选项来获取要显示的模型数据。最后,在urls.py文件中定义要返回的API路径并将其引用到视图类中。
示例代码如下:
models.py:
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)
pub_date = models.DateField()
serializers.py:
from rest_framework import serializers
from .models import Author, Book
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = ('id', 'title', 'pub_date')
class AuthorSerializer(serializers.ModelSerializer):
books = BookSerializer(many=True, read_only=True)
class Meta:
model = Author
fields = ('id', 'name', 'books')
views.py:
from rest_framework import viewsets
from .serializers import AuthorSerializer
from .models import Author
class AuthorViewSet(viewsets.ModelViewSet):
queryset = Author.objects.all()
serializer_class = AuthorSerializer
urls.py:
from django.urls import include, path
from rest_framework import routers
from .views import AuthorViewSet
router = routers.DefaultRouter()
router.register(r'authors', AuthorViewSet)
urlpatterns = [
path('', include(router.urls)),
]
上述示例代码中,我们创建了两个模型,Author和Book,这两个模型关联起来。同时我们在serializer中定义了需要序列化的字段,并用AuthorSerializer继承了Django REST框架的serializers.ModelSerializer类。最后在view中定义了queryset并分配到AuthorViewSet的构造函数中,urls.py中定义了我们的API路径和AuthorViewSet。
使用这个实现方法,我们可以返回联接2个模型后的特定字段集子集。
下一篇:API返回链接而不是名称