Как получить эпизоды из точной истории - PullRequest
0 голосов
/ 29 сентября 2019

У меня есть эпизод, связанный с историей (внешним ключом) с URL

router = routers.DefaultRouter()
router.register('', StoryView, basename='stories')
router.register('episodes', EpisodeView, basename='episodes')

Просмотр:

class EpisodeView(viewsets.ModelViewSet):

модели:

class Story(models.Model):
    title = models.CharField(max_length=255)
    description = models.TextField(max_length=255)
    cover = models.ImageField(upload_to=upload_location)
    genre = models.ManyToManyField(Genre)
    author = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)


class Episode(models.Model):
    title = models.CharField(max_length=255)
    cover = models.ImageField(upload_to=upload_location)
    story = models.ForeignKey(Story, on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)
    episode_number = models.IntegerField(null=True)

Iнужно получить эпизоды истории.Как это сделать, это дело?

1 Ответ

0 голосов
/ 29 сентября 2019

Вы должны добавить маршрутизатор для получения идентификатора эпизода

router = routers.DefaultRouter()
router.register('', StoryView, basename='stories')
router.register('episodes', EpisodeView, basename='episodes')
router.register('(?P<story_id>[0-9]+)/episodes', StoryEpisodeView, basename='episodes')

, а затем написать обновить метод списка для StoryEpisodeView:

def get_queryset(self):
    return Episode.objects.filter(story_id=self.story_id)

def list(self, request, *args, **kwargs):
    self.story_id = kwargs.get(story_id)
    super(request, *args, **kwargs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...