如何在Ming-ODM中映射自定义类型?

2024-05-17 05:41:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在Ming ODM建立一个映射。出现的一个问题是如何将自定义类型映射到字段,以及如何将该自定义类型传递到.query

基本上,我有一个表示客户ID的对象,我希望FieldProperty获取并返回一个这种类型的对象,而不是一个内置类型。这个类型可以与int转换,在Mongo中它将作为int存储,但是在数据模型和其他Python代码中,我希望将它作为这个特定于域的类型来传递。在

当将CustomerID类型的实例作为kwd参数直接传递给.query时,PyMongo抱怨它不理解该类型。在


Tags: 对象实例代码id类型客户mongo数据模型
1条回答
网友
1楼 · 发布于 2024-05-17 05:41:55

最近我想做一些类似的事情:通过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

相关问题 更多 >