Получить поле из 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