Примите во внимание следующий пример. У меня есть две модели, одна Author
и одна Article
. Они выглядят так:
# author.py
from django.db import models
class Author(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
def __str__(self):
return self.first_name
# article.py
from django.db import models
from authors.models import Author
class Article(models.Model):
author = models.ForeignKey(Author, on_delete=models.CASCADE)
text = models.TextField()
def __str__(self):
return self.text
Мои сериализаторы выглядят так:
from rest_framework import serializers
from .models import Article
from authors.serializers import AuthorSerializer
class ArticleSerializer(serializers.ModelSerializer):
author = AuthorSerializer()
class Meta:
model = Article
fields = '__all__'
from rest_framework import serializers
from .models import Author
class AuthorSerializer(serializers.ModelSerializer):
class Meta:
model = Author
fields = '__all__'
Теперь, если я хочу получать статьи из моего API, это просто. Получение статей прикрепляет автора, и это все хорошо, но как мне получить обратное? Например, если я хочу получить авторов с последними 5 статьями, которые они написали? Таким образом, предполагаемый вывод будет выглядеть примерно так:
{
"first_name": "Sethen",
"last_name": "Maleno",
"articles": [
{
"text": "some article"
},
{
"text": "another article"
}
]
}