Python 从模型中获取函数并将其放入序列化程序

Python 从模型中获取函数并将其放入序列化程序,python,django,django-rest-framework,Python,Django,Django Rest Framework,我有Django项目。我有一个模型和序列化程序,我正在尝试将函数“increase_id”的结果从模型发送到序列化程序。我做错了什么?我怎样才能实现它 class Person(models.Model): age = models.PositiveIntegerField() first_field = models.CharField() second_name = models.CharField() def increase_id(self):

我有Django项目。我有一个模型和序列化程序,我正在尝试将函数“increase_id”的结果从模型发送到序列化程序。我做错了什么?我怎样才能实现它

class Person(models.Model):
    age = models.PositiveIntegerField()
    first_field = models.CharField()
    second_name = models.CharField()
    
    def increase_id(self):
        own_id = self.id
        magnifier = own_id + 50_000
        return magnifier
序列化程序:

class PersonSerializer(serializers.ModelSerializer):
    magnifier = serializers.IntegerField(source='increase_id')
    class Meta:
        model = Person
        fields = ('id', 'first_name', 'second_name', 'age', 'magnifier')


上述方法在获取详细信息时效果良好,但在创建的情况下,它会给出一个错误,即需要放大镜字段

您可以使用属性装饰器

class Person(models.Model):
    age = models.PositiveIntegerField()
    first_field = models.CharField()
    second_name = models.CharField()

@property
def increase_id(self):
    own_id = self.id
    magnifier = own_id + 50_000
    return magnifier



class PersonSerializer(serializers.ModelSerializer):
    magnifier = serializers.SerializerMethodField(read_only=True)

    def get_magnifier(self, instance):
        return self.increase_id

    class Meta:
        model = Person
        fields = ('id', 'first_name', 'second_name', 'age', 'magnifier')`