从 json 模式动态创建 mongoengine 类

mei*_*han 9 python json jsonschema mongoengine

我正在寻找一种方法来获取我的 json 模式并在运行时动态创建一个 mongoengine 类。

例如:下面写的 mongoengine 类

class user(Document):
     _id  = StringField(required=False) # mongodb id
     name = StringField(required=True)  # user name
     email= StringField(required=False,regex="^[a-zA-Z0-9]*@mydomain.com$")  # user email
Run Code Online (Sandbox Code Playgroud)

将与从该模式生成的运行时动态生成的类相同

{
"type":"object",
"properties":{
    "_id"      : {"type":"string"},
    "name"     : {"type":"string"},
    "email"    : {"pattern":"^[a-zA-Z0-9]*@mydomain.com$"}
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么建议?

wow*_*in2 4

您可以动态创建 python 类,如下所示:

user_properties = { 
   '_id': StringField(required=False), # mongodb id
   'name': StringField(required=True), # user name
   'email': StringField(required=False,regex="^[a-zA-Z0-9]*@mydomain.com$"),  # user email
}
User = type("User", (Document, ), user_properties)
Run Code Online (Sandbox Code Playgroud)

剩下的只是 dict 的转换器,输入时提供了“您的架构”,它将转换为 dict user_properties

另外,这是对类似问题“如何从现有集合中生成 mongoengine 文档的模型”的回答,这也可以提供帮助。