3

我有一个不是 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,但据我了解,约定是任何以下划线开头的属性都被认为是私有的,所以我很惊讶地看到它被编码了。

4

1 回答 1

3

弄清楚了:

def toJSON(self):
    clone = copy.deepcopy(self)
    if getattr(clone.data, '_state', False):
        del clone.data._state
    return jsonpickle.encode(clone, unpicklable=False)
于 2013-08-15T07:01:23.920 回答