【问题标题】:Easy way to exclude django _state attribute from jsonpickle.encode从 jsonpickle.encode 中排除 django _state 属性的简单方法
【发布时间】:2013-08-15 03:47:04
【问题描述】:

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

class APIBase:
    data = object

    class Meta:
        abstract = True

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

然而,这个类的data 属性可以包含一个 Django 模型,并且当它由 jsonpickle 编码时,JSON 字符串包含来自 Django 的私有 _state 属性,我不想对其进行编码。

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

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

【问题讨论】:

    标签: python django jsonpickle


    【解决方案1】:

    想通了:

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

    【讨论】:

      猜你喜欢
      • 2012-05-25
      • 2016-08-08
      • 2019-02-28
      • 2015-09-13
      • 2011-04-02
      • 2011-02-04
      • 2021-06-08
      • 1970-01-01
      • 2015-03-31
      相关资源
      最近更新 更多