Я создаю API для веб-сайта, для которого у меня есть таблица с Books, другая с Hashtags (которая в основном представляет собой каталог хэштегов, например, "#traveling") и промежуточная таблица для создания многих ко многимотношения между книгами и хэштегами.Мои модели:
# models.py
class Books(models.Model):
id_books = models.AutoField(primary_key=True)
title = models.CharField(max_length=150)
class Hashtags(models.Model):
id_hashtags = models.AutoField(primary_key=True)
hashtag = models.CharField(max_length=150)
class Books_Hashtags(models.Model):
id_books_hashtags = models.AutoField(primary_key=True)
id_books = models.ForeignKey(Books, on_delete=models.CASCADE)
id_hashtags = models.ForeignKey(Hashtags, on_delete=models.CASCADE)
class Meta:
unique_together = ("id_books", "id_hashtags")
Я хотел бы иметь API, обеспечивающий вывод, подобный следующему:
[
{
"id_books": 1,
"title": "The Hobbit",
"hashtags": [
{
"id_hashtags": 1,
"hashtag": "fantasy"
},
{
"id_hashtags": 2,
"hashtag": "fiction"
},
{
"id_hashtags": 3,
"hashtag": "middle earth"
},
]
}
]
Для этой цели я сериализовал модели выше, используя DRF, следующиеВот некоторые примеры, которые я нашел в Интернете:
#serializers.py
from rest_framework import serializers
from app.models import Books, Books_Hashtags, Hashtags
class HashtagsSerializer(serializers.ModelSerializer):
hashtags = serializers.CharField()
class Meta:
model = Hashtags
fields = ('hashtag',)
class Books_HashtagsSerializer(serializers.ModelSerializer):
id_hashtag = HashtagsSerializer(many=True, read_only=True)
class Meta:
model = Books_Hashtags
fields = ('id_hashtags',)
class BooksSerializer(serializers.ModelSerializer):
id_books = serializers.IntegerField()
id_books_hashtags = Books_HashtagsSerializer(many=True, read_only=True)
title = serializers.CharField()
class Meta:
model = Books
fields = ('id_books', 'title', 'id_books_hashtags',)
Мои взгляды выглядят так:
#views.py
from ntgBackend.models import Books
from rest_framework import viewsets
from api.serializers import BooksSerializer
class BooksViewSet(viewsets.ModelViewSet):
serializer_class = BooksSerializer
queryset = Books.objects.all()
До сих пор мне удалось получить следующий вывод из API:
[
{
"id_books": 1,
"title": "The Hobbit",
}
]
Но нет информации о хэштегах, которые, как я знаю, существуют в БД.Я использую DRF 3.8.2 с БД MySQL и Django 2.0.2.Пожалуйста, помогите!