gpt4 book ai didi

python - 从 jsonpickle.encode 中排除 django _state 属性的简单方法

转载 作者:太空宇宙 更新时间:2023-11-04 01:25:18 25 4
gpt4 key购买 nike

我有一个不是 Django 模型对象的 python 类:

class APIBase:
data = object

class Meta:
abstract = True

def toJSON(self):
return jsonpickle.encode(self, unpicklable=False)

但是这个类的data属性可以包含一个Django模型,当它被jsonpickle编码时,JSON字符串包含一个私有(private)的_state。来自 Django 的属性,我不想对其进行编码。

有没有一种简单的方法可以排除这种情况而无需编写我自己的编码器?我可以相信只有 data 属性可以包含 Django 模型。

我仍在学习 python 和 django,但根据我的理解,约定是任何以下划线开头的属性都被认为是私有(private)的,所以我很惊讶地看到它被编码。

最佳答案

想通了:

def toJSON(self):
clone = copy.deepcopy(self)
if getattr(clone.data, '_state', False):
del clone.data._state
return jsonpickle.encode(clone, unpicklable=False)

关于python - 从 jsonpickle.encode 中排除 django _state 属性的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18246024/

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