Peewee - 如何将Dict转换为模型

时间:2014-03-30 21:59:38

标签: python peewee

让我说我有

import peewee

class Foo(Model):
    name = CharField()

我想做以下事情:

f = {id:1, name:"bar"}
foo = Foo.create_from_dict(f)

这是Peewee的原生人吗?我无法在source code找到任何内容。

我已经编写了这个有效的功能,但如果它存在,宁愿使用原生功能:

#clazz is a string for the name of the Model, i.e. 'Foo'
def model_from_dict(clazz, dictionary):
     #convert the string into the actual model class
    clazz = reduce(getattr, clazz.split("."), sys.modules[__name__])
    model = clazz()
    for key in dictionary.keys():
    #set the attributes of the model
        model.__dict__['_data'][key] = dictionary[key]
    return model

我有一个显示所有foo的网页,并允许用户编辑它们。我希望能够将JSON字符串传递给控制器​​,在那里我将它转换为dict然后从中制作Foos,因此我可以根据需要进行更新。

2 个答案:

答案 0 :(得分:9)

如果你有一个词典,你可以简单地说:

class User(Model):
    name = CharField()
    email = CharField()

d = {'name': 'Charlie', 'email': 'foo@bar.com'}
User.create(**d)

答案 1 :(得分:-2)

您可以使用PickledKeyStore,它允许您将任何值保存为python dict,它的工作方式类似于Python's pickle库。