DRF не работает nested serializer
К сожалению не могу локализовать проблему, почему данный код всегда показывает вложенный сериалайзер как нул в лучшем случае.
models.py
class Building(models.Model):
address = models.CharField(max_length=255)
construction_date = models.DateField(default=date.today)
class Bricklaying(models.Model):
count = models.PositiveIntegerField()
date = models.DateTimeField(default=timezone.now)
building = models.ForeignKey(Building, on_delete=models.DO_NOTHING)
serializers.py
class BuildingSerializer(s.HyperlinkedModelSerializer):
class Meta:
model = Building
fields = ['address', 'construction_date']
class BricklayingSerializer(s.HyperlinkedModelSerializer):
class Meta:
model = Bricklaying
fields = ['count', 'date']
class StatsSerializer(BuildingSerializer):
detail = BricklayingSerializer(source="bricklaying_set", many=True, read_only=True)
total_bricks_count = s.IntegerField()
class Meta:
model = BuildingSerializer.Meta.model
fields = BuildingSerializer.Meta.fields + ['total_bricks_count', 'detail']
views.py
class Stats(mixins.ListModelMixin, GenericViewSet):
serializer_class = StatsSerializer
queryset = Building.objects.values('address', 'construction_date'). \
annotate(total_bricks_count=Sum('bricklaying__count'))
Выдаваемый результат:
[
{
"address": "москва проспект вернадского дом 64 а",
"construction_date": "1968-10-25",
"total_bricks_count": 1400
},
{
"address": "москва проспект вернадского дом 64 а",
"construction_date": "2020-02-26",
"total_bricks_count": 100
}
]
Ожидаймый результат:
[
{
"address": "москва проспект вернадского дом 64 а",
"construction_date": "1968-10-25",
"total_bricks_count": 1400,
"detail":[{
"count": 700,
"date": "2020-02-26"
},{
"count": 700,
"date": "2020-02-26"
}]
},
{
"address": "москва проспект вернадского дом 64 а",
"construction_date": "2020-02-26",
"total_bricks_count": 100,
"detail":[{
"count": 100,
"date": "2020-02-26"
}]
}
]
Что пробовал для решения проблоемы: - Указывать releated_name для моделии это имя использовать как имя сериализиуремого поля, не помогло