Skip to main content
 首页 » 编程设计

python之在 Django Rest Framework 中修改序列化器中的字段名称

2024年09月03日31mq0036

我有一个对象,我想使用 DRF 的序列化程序进行序列化,但我想规范化一些字段名称。我想我可以使用 source 属性来实现这一点:

user = { 'FirstName': 'John', 'LastName': 'Doe' } 
 
serialized = UserSerializer(data=user) 
 
class UserSerializer(serializers.Serializer): 
    first_name = serializers.CharField(source="FirstName") 
    last_name = serializers.CharField(source="LastName") 

但是,我不确定如何访问传入的数据对象 - 有没有一种方法可以不创建新方法或某种复杂的 super() 调用?

编辑:

用例:我正在使用一个 API,该 API 以 CamelCase('FirstName'、'LastName' 等)返回值,我需要验证并将键名修改为蛇形大小写。我希望我可以使用独立的序列化程序,并在序列化程序中转换名称。我没有必须转换的数据模型。

请您参考如下方法:

试试这个:

class UserSerializer(serializers.Serializer): 
    FirstName = serializers.CharField(source="first_name") 
    LastName = serializers.CharField(source="last_name") 

序列化:

class Person: 
    first_name = "first name" 
    last_name = "last name" 
 
person1 = Person() 
serialized_data = UserSerializer(person1).data # = {"FirstName": "first name", "LastName": "last name"} 

反序列化:

data = { 'FirstName': 'John', 'LastName': 'Doe' } 
serializer = UserSerializer(data=data) 
serializer.is_valid() 
valid_deserialized_data = serializer.validated_data # = { 'first_name': 'John', 'last_name': 'Doe' }