gpt4 book ai didi

django - 序列化 django rest 框架时的附加字段

转载 作者:行者123 更新时间:2023-11-28 19:34:37 25 4
gpt4 key购买 nike

我是 django rest 框架的新手,创建了一个示例 Employee 模型。

我的 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

如何在我的 serializers.py 中定义这个新字段 full_name

最佳答案

我在这里看到两种方式(我更喜欢第一种方式,因为您可以在应用的其他部分重用它):

将计算属性添加到您的模型并将其添加到您的序列化器通过使用 a readonly field with 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

# serializers.py
class EmployeeSerializer(serializers.ModelSerializer):
full_name = serializers.Field(source='full_name')

class Meta:
model = Employees
fields = ('first_name','last_name', 'full_name')

通过使用 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')

关于django - 序列化 django rest 框架时的附加字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22677070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com