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']