У моего маленького бэкэнда подкаста есть несколько моделей, одной из которых является Episode.Теперь есть два новых для гостей (Гость) и для тем (Тема) - оба из которых имеют от ManyToManyField до Episode.Это в основном работает как задумано в админке.Теперь мне нужно перенести это в API.
В подробном сериализаторе / представлении для каждого эпизода уже есть некоторые другие связанные данные (пока не многие ко многим).Я также проверил этот пост , но до сих пор не могу заставить его работать и думаю, что могу что-то упустить.
Вот суть только для гостевого примера, чтобы сохранить его плотным, тема буквально идентична:
Модель эпизода:
class Episode(models.Model):
number = models.CharField(max_length=10, blank=False)
title = models.CharField(max_length=100, blank=False)
show = models.ForeignKey(Show, on_delete=models.PROTECT)
created_at = models.DateTimeField(auto_now=False)
published_at = models.DateTimeField(auto_now=False)
updated_at = models.DateTimeField(auto_now=False)
cover_image = models.URLField(null=True)
def __str__(self):
return self.title
Модель гостя:
class Guest(models.Model):
episodes = models.ManyToManyField(Episode)
name = models.CharField(max_length=100, blank=False)
twitter = models.CharField(max_length=20, null=True)
def __str__(self):
return self.name
Сериализатор:
class GuestSerializer(serializers.ModelSerializer):
class Meta:
model = Guest
fields = ('name',)
Сериализатор эпизода, где он должен появляться:
class EpisodeDetailSerializer(serializers.ModelSerializer):
...
guest = GuestSerializer(many=True, read_only=True)
topic = TopicSerializer(many=True, read_only=True)
class Meta:
model = Episode
fields = (..., 'guest', 'topic')
depth = 1
Я поместил некоторые данные для гостей и тем, но не могу отобразить их в API.Я также попробовал «Guest.episodes.through», как будто он у меня есть у администратора для Inline Admin Classes, но это ничего не изменило.