MongoEngine:创建泡菜领域

时间:2017-10-18 02:50:49

标签: python sqlalchemy mongoengine

我正在使用MongoEngine并尝试创建一个像SQLAlchemy的PickleType字段一样的字段。基本上,我只需要在将对象写入数据库之前对其进行腌制,并在对象重新加载时对其进行解开。

然而,看起来MongoEngine的字段并没有提供我可以覆盖的正确转换方法,而是有两种强制方法(to_pythonto_mongo)。如果我理解正确,可以随时调用这些函数,也就是说,对to_python(v)的调用并不能保证v来自数据库。我曾想过写这样的东西:

class PickleField(fields.BinaryField):
     def to_python(self, value):
        value = super().to_python(value)
        if <<value was pickled by the field>>
            return pickle.loads(value)
        else:
            return value

不幸的是,如果我想尽可能地保持一般性,我就没有办法检查该值是否应该被打开。例如,

a = pickle.dumps(x)
PickleField().to_python(a)  # should return a, will return x

我也不认为我可以在PickleField中存储任何州,因为所有州都共享这些州。

有解决方法吗?

0 个答案:

没有答案