Передача параметров или повторное использование атрибутов в методах сериализатора django

У меня такой код:

class InvoiceSerializer(serializers.ModelSerializer):

    val = serializers.SerializerMethodField()
    cost = serializers.SerializerMethodField()
    class Meta:
        model = Facturacion
        fields=["val", "cost", "others..."]

    def get_cost(self, object, va):
        print(va, "myvalue")
        return 1

    def get_val(self, object):
        val = Va.objects.get(id=1)
        serializer = ValSerializer(val)
        self.get_cost(self, object, (serializer.data)['val'])
        return (serializer.data)['val']

(serializer.data)['valorUnitario'] возвращает число, я просто хочу передать это значение в функцию get_cost, но она выдает сообщение InvoiceSerializer.get_cost() принимает 3 позиционных аргумента, но было задано 4.

Я не хочу делать весь процесс get_val снова по причинам оптимизации, я просто хочу использовать те же данные, но в get_cost.

Другая форма, которую я пробовал, была такой:

    def get_cost(self, object):
        return self.val

val должен быть заполнен методом get_val (и он отображается правильно, когда я использую api); но он выдает сообщение: AttributeError: 'InvoiceSerializer' object has no attribute 'val'

как я могу повторно использовать атрибут val?

Вернуться на верх