序列化Django Rest框架时的其他字段 [英] Additional field while serializing django rest framework
本文介绍了序列化Django Rest框架时的其他字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是django rest框架的新手,并且创建了示例 Employee
模型。
I am a newbie to django rest framework and have created a sample Employee
model.
我的 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)
我的 serializers.py :
class EmployeeSerializer(serializers.Serializer):
class Meta:
model = Employees
fields = ('first_name','last_name')
这可以正常工作,但是我想要一个附加字段 full_name
,它将是 first_name + last_name
。
This works fine but I want an additional field full_name
, which will be first_name + last_name
.
如何在我的<$ c $中定义此新字段全名
c> serializers.py ?
How do I define this new field full_name
in my serializers.py
?
推荐答案
我在这里看到两种方法(我喜欢第一种方法,因为您可以在其他地方重用它应用程序的其他部分):
I see two ways here (I prefer the first way since you can reuse it in other parts of the app):
将计算出的属性添加到模型中,并将其添加到序列化器中
通过使用带有source =
# 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
#serializes.py
class EmployeeSerializer(serializers.ModelSerializer):
full_name = serializers.Field(source='full_name')
class Meta:
model = Employees
fields = ('first_name','last_name', 'full_name')
通过使用 SerializerMethodField
(您的模型不变)
by using SerializerMethodField (your model unchanged)
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')
这篇关于序列化Django Rest框架时的其他字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文