Отношение атрибута отношения Django Rest Framework - PullRequest
0 голосов
/ 29 апреля 2018

Я борюсь, чтобы найти свой путь в DRF и не могу получить связанные данные в моей конечной точке.

models.py

class ChapterMark(models.Model):
    title           = models.CharField(max_length=100, null=True)
    episode         = models.ForeignKey(Episode, on_delete=models.CASCADE)
    start_time      = models.CharField(max_length=20)


class Episode(models.Model):
    title           = models.CharField(max_length=100, blank=False)
    show            = models.ForeignKey(Show, on_delete=models.PROTECT)

serializers.py

class ChapterMarkSerializer(serializers.ModelSerializer):
    class Meta:
        model = ChapterMark
        exclude = ('')

class EpisodeSerializer(serializers.ModelSerializer):
    chapters = ChapterMarkSerializer(source='id')

    class Meta:
        model = Episode
        depth = 1

Я получаю ошибку

Получил AttributeError при попытке получить значение для поля start_time на сериализаторе ChapterMarkSerializer. Сериализатор поле может быть названо неправильно и не соответствовать ни одному атрибуту или ключу на int экземпляр. Исходный текст исключения был: у объекта 'int' нет атрибут start_time.

Я предполагаю, что отношение через source='id' просто не работает, но все, что я нашел до сих пор, указывает на то, чтобы сделать это таким образом.

Между главами и эпизодами существует многозначная связь (поэтому в каждом эпизоде ​​много глав). Я уверен, что просто упускаю важную часть.

1 Ответ

0 голосов
/ 29 апреля 2018

Чтобы получить объект обратной связи, используйте chaptermark_set в качестве источника поля глав, также не забудьте добавить many=True, так как эпизод может иметь несколько глав:

class EpisodeSerializer(serializers.ModelSerializer):
    chapters = ChapterMarkSerializer(source='chaptermark_set', many=True)

    class Meta:
        model = Episode
        depth = 1 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...