簡體   English   中英

如何在Ming ODM中映射自定義類型?

[英]How to map a custom type in Ming ODM?

我正在明ODM中建立映射。 出現的一個問題是如何將自定義類型映射到字段,以及如何將該自定義類型傳遞到.query

基本上,我有一個代表客戶ID的對象。 我希望FieldProperty能夠獲取並返回這種類型的對象,而不是其中一種內置類型。 該類型可以轉換為int,也可以作為int存儲在Mongo中,但是在數據模型和其他Python代碼中我想將它作為特定於域的類型傳遞。

當直接將一個CustomerID類型的實例作為kwd參數傳遞給.query ,PyMongo抱怨它不理解該類型。

我最近想做類似的事情; 通過Ming在MongoDB中將IP地址存儲為二進制數據。 (這樣做的原因是為了允許有效的CIDR查詢。)我正在為嘗試同樣的事情碰巧碰到這個問題的其他人提供我的解決方案,盡管幫助@kbluck可能為時已晚。

雖然我的IP地址類是bson.Binary的子類(我正在使用Python 2;對於Python 3,將使用內置binary類型的子類),我做了這項工作。

您可以將CustomerID類作為int的子類。 CustomerID類需要具有多態構造函數,該構造函數接受int (用於從數據庫加載時), CustomerID實例(復制構造函數)以及應用程序需要使用的任何構造函數(在我的示例中為IP地址表示字符串)。

這不是你要求的; FieldProperty接受int或您的類型,並返回一個特殊的int ,知道如何轉換為您的類型。

我已經上傳了一個完整的例子(IP地址)作為要點: https//gist.github.com/3854792

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM