如何使用JSON中的pymodm建立动态模型?

时间:2019-04-06 14:35:50

标签: python mongodb pymodm

我正在使用以下JSON:

{
    "Select": {
        "typ": "String",
        "value": "select"
    },
    "Non-redundant Student ID": {
        "typ": "String",
        "value": "nonRedundantStudId"
    },
    "ID": {
        "typ": "Integer",
        "value": "id"
    }
    "Index": {
        "typ": "Integer",
        "value": "index"
    }
}

我必须通过包含MongoModeltyp的JSON来制作value类。 typvalue分别是MongoDB字段类型和字段名称。

我想像这样在JSON之上创建

from pymodm import MongoModel, fields
class CollectionName(MongoModel):
    select = fields.CharField(blank=False)
    nonRedundantStudId = fields.CharField(blank=False)
    id = fields.IntegerField(blank=False)
    index = fields.IntegerField(blank=False)

如何动态地做到这一点?我的意思是,如何将JSON中的值用作MongoDB字段名称,将typ用作MongoDB字段类型?

我尝试了

for key, val in json_obj.items():
    print(val)
    if val["typ"] == "String":
        exec(val["value"] + "=" + fields.CharField(blank=False))
    elif val["typ"] == "Integer":
        exec(val["value"] + "=" + fields.IntegerField(blank=False))

但这给出了以下错误:

exec(val["value"] + "=" + fields.CharField(blank=False))
TypeError: must be str, not CharField

0 个答案:

没有答案