У меня есть две модели District
и BTS
.Я хочу получить ответ, как показано ниже.
[{
"id": 15,
"name": "Westen",
"page": 1,
"expanded": false,
"selected": false,
"children": [{
"id": 12,
"name": "BTS2",
"page": 1
}]
}, {
"id": 13,
"name": "Noth",
"page": 1,
"children": [{
"id": 13,
"name": "BTS2",
"page": 2
}]
}]
У меня есть два сериализатора
class BTSSerializer(serializers.HyperlinkedModelSerializer):
def to_representation(self, value):
return {
'id': value.id,
'name': value.bts_id,
"page": 4,
"expanded": False,
"selected": False,
}
class Meta:
model = BTS
fields = ('bts_id', 'id')
class DistrictSerializer(serializers.HyperlinkedModelSerializer):
def to_representation(self, value):
return {
'id': value.id,
'name': value.name,
"page": 1,
"expanded": False,
"selected": False,
"children": []
}
class Meta:
model = District
fields = ('name', 'id')
Это модель BTS
class BTS(models.Model):
id = models.AutoField(primary_key=True)
bts_id = models.CharField(max_length = 100, unique=True)
district_id = models.ForeignKey(District, related_name='districts', on_delete=models.CASCADE, null=True)
bts_type_id = models.ForeignKey(BTSType, related_name='types', on_delete=models.CASCADE, null=True)
class Meta:
db_table = "base_stations"
def __str__(self):
return self.bts_id
Я изменился следующим образом
class DistrictSerializer(serializers.HyperlinkedModelSerializer):
bts = BTSSerializer(many=True)
def to_representation(self, value):
return {
'id': value.id,
'name': value.name,
"page": 1,
"expanded": False,
"selected": False,
"children": value.bts
}
class Meta:
model = District
fields = ('name', 'id', 'bts')
Как мне этого добиться?
Получил эту ошибку
AttributeError at /tree_parents/
'District' object has no attribute 'bts'
Request Method: GET
Request URL: http://localhost:8000/tree_parents/
Django Version: 2.2
Exception Type: AttributeError
Exception Value:
'District' object has no attribute 'bts'
Exception Location: /home/samitha/workspace/techlead/tas-test/api/serializers.py in to_representation, line 45