Python 从模型中获取函数并将其放入序列化程序
我有Django项目。我有一个模型和序列化程序,我正在尝试将函数“increase_id”的结果从模型发送到序列化程序。我做错了什么?我怎样才能实现它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):
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')`