Получить поле из ModelSerializer

В файле serializers.py я из параметров url получаю данные в get_payment и возвращаю результат некого вычисления. Мне также нужно получить поле term_min, но не из url, а из поля самого сериалайзера и провести вычисления в get_payment. Пробовал сделать так: self.context.get('term_min'). Но ничего не выходит, помогите с данным вопросом, или предложите более уместный вариант

models.py

from django.db import models

class Ipoteka(models.Model):
    bank_name = models.CharField(max_length=100, default='')
    term_min = models.IntegerField(default=0)
    term_max = models.IntegerField(default=0)
    rate_min = models.FloatField(default=0)
    rate_max = models.FloatField(default=0)
    payment_min = models.BigIntegerField(default=0)
    payment_max = models.BigIntegerField(default=0)

def __str__(self):
    return self.bank_name

serializers.py

class IpotekaSerializer(serializers.ModelSerializer):
payment = serializers.SerializerMethodField()

def get_payment(self, obj):
    try:
        price = int(self.context.get('request').query_params.get('price', None))
        deposit = int(self.context.get('request').query_params.get('deposit', None))
        term = int(self.context.get('request').query_params.get('term', None))
        return (price / (term * 12)) + deposit
    except TypeError:
        return 0

class Meta:
    model = Ipoteka
    fields = '__all__'

Если я правильно понял, то тебе нужна информация из самого сериализуемого объекта. Её можно достать так:

def get_payment(self, obj):
    current_term_min = obj.term_min
    ...
    return calculated_payment
Вернуться на верх