Передача параметров или повторное использование атрибутов в методах сериализатора 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?