Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python字典更新键';s值_Python_Django Rest Framework - Fatal编程技术网

python字典更新键';s值

python字典更新键';s值,python,django-rest-framework,Python,Django Rest Framework,这是我的密码: #...existing code print(serializer.data) if group.member.filter(id=user).exists():#<-- this is true serializer.data['joined'] = True print(1) else: print(0) print(serializer.data) #…现有代码 打印(serializer.data) 如果group.member

这是我的密码:

#...existing code
print(serializer.data)
if group.member.filter(id=user).exists():#<-- this is true
    serializer.data['joined'] = True
    print(1)
else:
    print(0)
    
print(serializer.data)
#…现有代码
打印(serializer.data)

如果group.member.filter(id=user.exists():#在django中,
Serializer.data
属性返回OrderedDict,它是使用
Serializer.\u data
构建的,但返回值不是
Serializer.\u data
本身

# In class Serializer(BaseSerializer)
@property
def data(self):
    if hasattr(self, 'initial_data') and not hasattr(self, '_validated_data'):
        msg = (
            'When a serializer is passed a `data` keyword argument you '
            'must call `.is_valid()` before attempting to access the '
            'serialized `.data` representation.\n'
            'You should either call `.is_valid()` first, '
            'or access `.initial_data` instead.'
        )
        raise AssertionError(msg)

    if not hasattr(self, '_data'):
        if self.instance is not None and not getattr(self, '_errors', None):
            self._data = self.to_representation(self.instance)
        elif hasattr(self, '_validated_data') and not getattr(self, '_errors', None):
            self._data = self.to_representation(self.validated_data)
        else:
            self._data = self.get_initial()
    return self._data
因此,您应该保留返回值的副本,并按如下方式修改该值:

# keep the return value of serializer.data
serialized_data = serializer.data
print(serializer_data)
if group.member.filter(id=user).exists():
    serializer_data['joined'] = True
    print(1)
else:
    print(0)
    
print(serializer_data)

在django中,
Serializer.data
属性返回OrderedDict,它是使用
Serializer.\u data
构造的,但返回值不是
Serializer.\u data
本身

# In class Serializer(BaseSerializer)
@property
def data(self):
    if hasattr(self, 'initial_data') and not hasattr(self, '_validated_data'):
        msg = (
            'When a serializer is passed a `data` keyword argument you '
            'must call `.is_valid()` before attempting to access the '
            'serialized `.data` representation.\n'
            'You should either call `.is_valid()` first, '
            'or access `.initial_data` instead.'
        )
        raise AssertionError(msg)

    if not hasattr(self, '_data'):
        if self.instance is not None and not getattr(self, '_errors', None):
            self._data = self.to_representation(self.instance)
        elif hasattr(self, '_validated_data') and not getattr(self, '_errors', None):
            self._data = self.to_representation(self.validated_data)
        else:
            self._data = self.get_initial()
    return self._data
因此,您应该保留返回值的副本,并按如下方式修改该值:

# keep the return value of serializer.data
serialized_data = serializer.data
print(serializer_data)
if group.member.filter(id=user).exists():
    serializer_data['joined'] = True
    print(1)
else:
    print(0)
    
print(serializer_data)

什么是
类型(serializer.data)
,它可能不是一个dict。如果在
打印(1)
之前打印
serializer.data
会怎么样?什么是
类型(serializer.data)
,它可能不是一个dict。如果在
打印(1)
之前打印
serializer.data
会怎么样?回答得很好。也真的帮助我理解,谢谢。@Sayse谢谢,我根据你的评论更新了答案。回答得很好。也真的帮助我理解,谢谢。@Sayse谢谢,我根据你的评论更新了答案。