Вопрос

Lets say I have

import peewee

class Foo(Model):
    name = CharField()

I would like to do the following:

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

Is this native in Peewee? I was unable to spot anything in the source code.

I've wrote this function which works but would rather use the native function if it exists:

#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

I have a web page that displays all the foos and allows the user to edit them. I would like to be able to pass a JSON string to the controller, where I would convert it to a dict and then make Foos out of it, so I can update as necessary.

Это было полезно?

Решение

If you have a dict, you can simply:

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

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

Другие советы

You could use PickledKeyStore which allows you to save any value as a python dict and it works like Python's pickle library.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top