Django ORM 使用字典参数保存数据的简便方法
本文介绍在Django框架中,如何利用字典作为参数高效保存和更新Model数据。通过解包字典(**data_dict)可简化代码,同时支持扩展字段,但需注意字典位置及字段对应关系。
本文详解在Django框架中,利用字典参数保存Model数据的实现方式,供开发者参考。
Django Model字典保存基础方法
假设已有一个包含所有必要信息的字典,希望借助该字典与Django Model结合,以极简代码完成数据保存。例如存在如下定义的Model:
from django.db import models
class MyModel(models.Model):
title=models.CharField(max_length=250)
body= models.CharField(max_length=1000)
....
存在一个字典变量:
data_dict = {
'title' : 'awesome title',
'body' : 'great body of text',
}
若按常规逻辑,保存数据的代码可能如下所示:
mymodel = MyModel()
mymodel.title = data_dict['title']
mymodel.bdy = data_dict['body']
mymodel.save()
或者采用另一种写法:
mymodel = MyModel(title=data_dict['title'],body=data_dict['body'])
mymodel.save()
这两种方式本质相同,均是从字典中提取字段值进行赋值。
使用字典解包简化保存流程
实际上存在更简洁的方法:直接将整个字典传入Model构造函数。但需确保字典中的键(key)与Model中定义的字段名严格对应,否则将引发错误。在封装字典时,通常可保证字段一致。示例代码如下:
mymodel = MyModel(**data_dict)
mymodel.save()
若需添加额外扩展字段,可将其一并传入,但必须注意:**data_dict 必须置于参数列表的最后位置**,否则扩展字段无法正确覆盖或合并。示例如下:
mymodel =MyModel(extra='hello', extra2='world', **data_dict)
mymodel .save()
此外,还可使用以下语句实现保存:
MyModel.objects.create(**data_dict)
上述方法仅实现了将字典数据保存至Django Model,并支持字段扩展。
利用字典更新现有Model数据
2013-01-04日更新:近期文章指出,若需使用字典参数更新现有Model,可采用如下方式:
mymodel=MyModel.objects.get(pk=pk)#....找到唯一的一个,自行修改
mymodel.__dict__.update(data_dict )
mymodel.save()
亦可通过以下方式实现更新操作:
MyModel.objects.filter(pk=pk).update(**data_dict )
希望本文所述内容对基于Django框架的Python程序设计有所助益。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









