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

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

本文介绍在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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。