Доступ к атрибутам внешнего ключа для арифметики в django rest framework

Я пытаюсь вычислить длину дома относительно некоторых соседних районов, так что, house_size / (neighborhood[0].length + neighborhood[1].length...):

class House(models.Model):
    house_id = models.CharField(max_length=256, primary_key=True)                             
    size = models.IntegerField()
    neighborhood = models.ManyToManyField('neighborhood', through='HouseNeighborhoodLink')
class Neighborhood(models.Model):
    length = models.IntegerField() 

Я создал таблицу для присвоения нескольким районам одного дома. Также дома могут быть назначены нескольким соседним районам:

class HouseNeighborhoodLink(models.Model):
    house_id = models.ForeignKey(House, on_delete=models.DO_NOTHING)
    neighborhood = models.ForeignKey(Neighborhood, on_delete=models.DO_NOTHING)

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

class LengthFromNeighborhoodSerializer(serializers.ModelSerializer):
    class Meta:
        model = Neighborhood
        fields = ['length']        


class HouseCoverageOfNeighborhood(serializers.ModelSerializer):
    Neighborhood = LengthFromNeighborhoodSerializer(read_only=True)

    class Meta:
        model = HouseNeighborhoodLink
        fields = ['house_id', 'Neighborhood']

Я застрял на трех точках (...), где я хочу получить доступ к атрибуту длины всех районов, а затем вычислить пропорцию к дому. Я не уверен, как получить доступ к длине каждого района из таблицы HouseNeighborhoodLink:

class HouseCoverageDetail(generics.ListAPIView):
    queryset = HouseNeighborhoodLink.objects.all()
    serializer_class = HouseCoverageOfNeighborhood

    def get_queryset(self):
        house_id = self.kwargs['house_id']
        neighborhood = self.queryset.filter(house_id=house_id)
        ...
        return result

Взломать это

 class HouseCoverageOfNeighborhood(serializers.ModelSerializer):
    Neighborhood = LengthFromNeighborhoodSerializer(many=True,read_only=True)

    class Meta:
        model = HouseNeighborhoodLink
        fields = ['house_id', 'Neighborhood']
Вернуться на верх