有人可以向我解释一下“data = valid_data.copy()”是什么意思吗?

问题描述 投票:0回答:1

我想知道为什么

create
方法不直接处理数据而是要复制到
data
然后间接处理,而返回的结果也是处理后的用户。

class UserSerializer(serializers.ModelSerializer):
    alumni = AlumniSerializer()
    
    def to_representation(self, instance):
        req = super().to_representation(instance)
        if instance.avatar:
            req['avatar'] = instance.avatar.url
            
        if instance.cover:
            req['cover'] = instance.cover.url
        
        return req
    
    def create(self, validated_data):
        data = validated_data.copy()
        user = User(**data)
        user.set_password(user.password)
        user.save()
        
        return user
    
    class Meta:
        model = User
        fields = ['id', 'first_name', 'last_name', 'username', 'password', 'email', 'avatar', 'cover', 'alumni']
        extra_kwargs = {
            'password': {
                'write_only': True
            }
        }
django serialization django-rest-framework
1个回答
0
投票

此行创建 valid_data 字典的浅表副本。它确保对数据字典所做的任何修改都不会影响原始的 valid_data 字典。这很重要,因为您将在创建新用户实例 (User(**data)) 期间操作数据字典中的数据。通过创建副本,您可以确保原始的 valid_data 字典保持完整,并且可以在需要时在其他地方使用。

© www.soinside.com 2019 - 2024. All rights reserved.