Django Rest Framework вложенные сериализаторы AttributeError Объект 'RelatedManager' не имеет атрибута

Полная ошибка

Получена ошибка AttributeError при попытке получить значение для поля segments на сериализаторе BackboneLineSerializer. Поле сериализатора может быть названо неверно и не соответствовать какому-либо атрибуту или ключу экземпляра RelatedManager. Оригинальный текст исключения был следующим: объект 'RelatedManager' не имеет атрибута 'segments'.

Я не могу понять, почему я получаю эту ошибку. Я использую, как мне кажется, точно такой же код в другом месте, и он работает. Единственное, о чем я могу думать, это то, что я мог изменить related_name в поле backbone_line модели BackboneLineSegments с чего-то другого на 'segments'. Все миграции были применены, и я не знаю, почему это могло вызвать проблемы. Может быть, база данных неправильно обновляет новое related_name? Я использую Postgres, если это имеет значение.

Модели

class BackboneLine(models.Model):
    sub_area = models.ForeignKey(
        SubArea,
        on_delete=models.SET_NULL,
        null=True,
        related_name='backbone_lines')
    source = models.ForeignKey(
        Enclosure,
        on_delete=models.SET_NULL,
        null=True,
        related_name='backbone_lines_out'
    )
    destination = models.OneToOneField(
        Enclosure,
        on_delete=models.SET_NULL,
        null=True,
        related_name='backbone_line_in'
    )

    @property
    def label(self):
        return f'{self.source.box_number} - {self.destination.box_number}'

class BackboneLineSegment(models.Model):
    location = models.LineStringField()
    buried = models.BooleanField(default=False)
    backbone_line = models.ForeignKey(
        BackboneLine,
        on_delete=models.CASCADE,
        related_name='segments'
    )

    @property
    def long_lat(self):
        return [list(coord_pair) for coord_pair in self.location]

    @property
    def lat_long(self):
        return [(cords[1], cords[0]) for cords in self.location.coords]

Сериализаторы

class BackboneLineSegmentSerializer(GeoFeatureModelSerializer):

    class Meta:
        model = BackboneLineSegment
        geo_field = 'location'
        fields = ['location', 'buried']

class BackboneLineSerializer(ModelSerializer):
    segments = BackboneLineSegmentSerializer(many=True)

    class Meta:
        model = BackboneLine
        fields = ['label', 'segments']
Вернуться на верх