我正在Ming ODM建立一个映射。出现的一个问题是如何将自定义类型映射到字段,以及如何将该自定义类型传递到.query
基本上,我有一个表示客户ID的对象,我希望FieldProperty获取并返回一个这种类型的对象,而不是一个内置类型。这个类型可以与int转换,在Mongo中它将作为int存储,但是在数据模型和其他Python代码中,我希望将它作为这个特定于域的类型来传递。在
当将CustomerID类型的实例作为kwd参数直接传递给.query
时,PyMongo抱怨它不理解该类型。在
Tags:
最近我想做一些类似的事情:通过Ming将IP地址作为二进制数据存储在MongoDB中。(这样做的原因是为了允许高效的CIDR查询。)我为其他人提供我的解决方案,即使现在帮助@kbluck可能已经太迟了。在
我通过使IP地址类成为
bson.Binary
的子类的技巧实现了这一点(我使用的是python2;对于python3,将使用内置的binary
类型的子类)。在您将使您的
CustomerID
类成为int
的子类。CustomerID
类需要有一个多态构造函数,该构造函数接受int
(用于从数据库加载时)、一个CustomerID
实例(复制构造函数),以及应用程序需要使用的任何构造函数(在我的示例中是一个IP地址表示字符串)。在这不是您所要求的;FieldProperty接受
int
或您的类型,并返回一个知道如何转换为您的类型的特殊的int
。在我上传了一个完整的示例(IP地址)作为要点:https://gist.github.com/3854792
相关问题 更多 >
编程相关推荐