一个字典可以传递给创buildDjango模型?

有可能做一些类似于这个与列表,字典或其他什么东西甚至?

data_dict = { 'title' : 'awesome title', 'body' : 'great body of text', } Model.objects.create(data_dict) 

如果我可以扩展它就更好了

 Model.objects.create(data_dict, extra='hello', extra2='world) 

如果titlebody是模型中的字段,则可以使用**运算符在字典中提供关键字参数 。

假设你的模型叫做MyModel

 # create instance of model m = MyModel(**data_dict) # don't forget to save to database! m.save() 

至于你的第二个问题,字典必须是最后的论点。 同样, extraextra2应该是模型中的字段。

 m2 =MyModel(extra='hello', extra2='world', **data_dict) m2.save() 

不是直接回答这个问题,但我发现这个代码帮助我创build了可以很好地保存到正确答案中的字典。 如果将这些数据导出到json,则需要进行types转换。

我希望这有帮助:

  #mod is a django database model instance def toDict( mod ): import datetime from decimal import Decimal import re #Go through the object, load in the objects we want obj = {} for key in mod.__dict__: if re.search('^_', key): continue #Copy my data if isinstance( mod.__dict__[key], datetime.datetime ): obj[key] = int(calendar.timegm( ts.utctimetuple(mod.__dict__[key]))) elif isinstance( mod.__dict__[key], Decimal ): obj[key] = float( mod.__dict__[key] ) else: obj[key] = mod.__dict__[key] return obj def toCsv( mod, fields, delim=',' ): import datetime from decimal import Decimal #Dump the items raw = [] for key in fields: if key not in mod.__dict__: continue #Copy my data if isinstance( mod.__dict__[key], datetime.datetime ): raw.append( str(calendar.timegm( ts.utctimetuple(mod.__dict__[key]))) ) elif isinstance( mod.__dict__[key], Decimal ): raw.append( str(float( mod.__dict__[key] ))) else: raw.append( str(mod.__dict__[key]) ) return delim.join( raw )