Как сделать динамическую модель, используя pymodm из JSON? - PullRequest
0 голосов
/ 06 апреля 2019

У меня следующий JSON:

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

Я должен создать класс MongoModel сверху JSON, который содержит typ и value.typ и value - это не что иное, как тип поля 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 и тип в качестве типа поля 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
...