我是 django 休息框架的新手,并创建了一个示例Employee
model.
My 模型.py:
class Employees(models.Model):
created = models.DateTimeField(auto_now_add=True)
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
My 序列化器.py:
class EmployeeSerializer(serializers.Serializer):
class Meta:
model = Employees
fields = ('first_name','last_name')
这工作正常,但我想要一个额外的字段full_name
,这将是first_name + last_name
.
我如何定义这个新字段full_name
in my serializers.py
?
我在这里看到两种方法(我更喜欢第一种方法,因为您可以在应用程序的其他部分重用它):
将计算属性添加到模型中并将其添加到序列化器中通过使用带有 source= 的只读字段 http://www.django-rest-framework.org/api-guide/fields#core-arguments
# models.py
class Employees(models.Model):
created = models.DateTimeField(auto_now_add=True)
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
@property
def full_name(self):
return self.first_name + self.last_name
# serializers.py
class EmployeeSerializer(serializers.ModelSerializer):
full_name = serializers.Field(source='full_name')
class Meta:
model = Employees
fields = ('first_name','last_name', 'full_name')
通过使用序列化方法字段 http://www.django-rest-framework.org/api-guide/fields#serializermethodfield(你的模型不变)
class EmployeeSerializer(serializers.ModelSerializer):
full_name = serializers.SerializerMethodField('get_full_name')
def get_full_name(self, obj):
return obj.first_name + obj.last_name
class Meta:
model = Employees
fields = ('first_name','last_name', 'full_name')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)