django框架model orM使用字典作为参数,保存数据的方法分析


Posted in Python onJune 24, 2019

本文实例讲述了django框架model orM使用字典作为参数,保存数据的方法。分享给大家供大家参考,具体如下:

假设有一个字典,里面已经有了所有相关信息,现在想利用这个字典作为参数,跟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()

其实是一样的,从dict里面去取得数据。

其实还有更简单的方法,直接传入这个dict数据,但前提是: 字典数据里面的key 字段一定要与model中定义的field 对应,否则就会报错.但事实上在封装dict数据的时候,完全可以对应的。用如下方法保存

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保存dict ,并且还可以扩展

2013-01-04日更新:最近在一篇文章中发现,如果要用字典dict作为参数更新一个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 相关文章推荐
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
Feb 04 Python
python求质数的3种方法
Sep 28 Python
python中pika模块问题的深入探究
Oct 13 Python
python爬虫获取百度首页内容教学
Dec 23 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
Apr 05 Python
python点击鼠标获取坐标(Graphics)
Aug 10 Python
python数据化运营的重要意义
Nov 25 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
Feb 10 Python
Python如何爬取qq音乐歌词到本地
Jun 01 Python
opencv 阈值分割的具体使用
Jul 08 Python
Python爬取12306车次信息代码详解
Aug 12 Python
Python中的 No Module named ***问题及解决
Jul 23 Python
python对文件目录的操作方法实例总结
Jun 24 #Python
详解10个可以快速用Python进行数据分析的小技巧
Jun 24 #Python
python跳出双层for循环的解决方法
Jun 24 #Python
解决python xx.py文件点击完之后一闪而过的问题
Jun 24 #Python
解决python执行不输出系统命令弹框的问题
Jun 24 #Python
python实现在cmd窗口显示彩色文字
Jun 24 #Python
打包python 加icon 去掉cmd黑窗口方法
Jun 24 #Python
You might like
thinkphp验证码显示不出来的解决方法
2014/03/29 PHP
php字符串分割函数用法实例
2015/03/17 PHP
php遍历解析xml字符串的方法
2016/05/05 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
2020/11/23 PHP
YUI 读码日记之 YAHOO.util.Dom - Part.1
2008/03/22 Javascript
javascript模仿msgbox提示效果代码
2008/06/10 Javascript
jQuery 图像裁剪插件Jcrop的简单使用
2009/05/22 Javascript
jQuery EasyUI API 中文文档 - Spinner微调器使用
2011/10/21 Javascript
iphone safari不支持position fixed的解决方法
2012/05/04 Javascript
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
2015/12/18 Javascript
强大Vue.js组件浅析
2016/09/12 Javascript
深入理解requestAnimationFrame的动画循环
2016/09/20 Javascript
对angularJs中自定义指令replace的属性详解
2018/10/09 Javascript
详解小程序中h5页面onShow实现及跨页面通信方案
2019/05/30 Javascript
Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示
2019/06/26 Javascript
一起写一个即插即用的Vue Loading插件实现
2019/10/31 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
详解Vue的异步更新实现原理
2020/12/22 Vue.js
Mac下Supervisor进程监控管理工具的安装与配置
2014/12/16 Python
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
理解Python中的With语句
2016/03/18 Python
Python 元类实例解析
2018/04/04 Python
对Python字符串中的换行符和制表符介绍
2018/05/03 Python
Python3+Selenium+Chrome实现自动填写WPS表单
2020/02/12 Python
python中如何写类
2020/06/29 Python
html5版canvas自由拼图实例
2014/10/15 HTML / CSS
PHP如何去执行一个SQL语句
2016/03/05 面试题
字符串str除首尾字符外的其他字符按升序排列
2013/03/08 面试题
运动会入场词200字
2014/02/15 职场文书
人事经理岗位职责
2014/04/28 职场文书
领导干部查摆“四风”问题自我剖析材料思想汇报
2014/10/05 职场文书
学习十八届四中全会依法治国心得体会
2014/11/03 职场文书
建房合同协议书
2016/03/21 职场文书
Python中使用ipython的详细教程
2021/06/22 Python