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

标签 python django jsonpickle

我有一个不是 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/

相关文章:

python - python 中的热图 - 带颜色

python - 在 VS Code 中安装 mypy 的问题

java - jython多线程

python - 如何将Python字典写入文件而不使其成为字符串?

python - 在 Python 中序列化子集合(使用 jsonpickle)

python - 多行字典: Replace the key as per a word in value

python - 使用 travis 和 heroku 进行持续部署——保留某种状态

Django 到 AWS : favicon, robots.txt 和站点地图?

python - 原始查询必须包含主键错误,即使我正在执行 SELECT *

python - JSON 序列化对象在多处理调用时出错 - TypeError : XXX objects not callable error