Django ORM 使用字典参数保存数据的简便方法

顾星河
顾星河
发布时间:2026-10-13 | 4人浏览过
原创

本文介绍在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程序设计有所助益。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表