django 模型字段设置默认值代码


Posted in Python onJuly 15, 2020

我就废话不多说了,大家还是直接看代码吧~

class SitService(models.Model):
 applicationname = models.CharField(max_length=50,primary_key=True)
 ip = models.CharField(max_length=50)
 port = models.IntegerField(default=22) #设置默认值为22
 path = models.CharField(max_length=50)

补充知识:django 设置默认值到SQL

环境:django 1.9.7

背景介绍

django migrate 生成表结构时,默认是不处理default(即字段的default 是在django 框架层面,没有到数据库层面)。当然,如果只用django 来做项目是没有任何问题的,但是如果同一个库被不同框架操作,那么怎么来管理这些表呢是个问题。

项目前端系统使用tornado,后端管理系统使用django, 鉴于这种情况,所以就用django来生成所有的表,但是在实际中,不通过django 插入的数据全都报错,一查看,全是默认值没有填写的情况。

历史变化

#470 "default" values should be expressed in SQL schema

#4800 Field's default value in model isn't passed to SQL

上面的fix已经过时太久,在1.9.7里面这些都是有的,只是屏蔽了default

详情

跟踪调试发现如下东西

在文件: django/db/backends/base/schema.py

line:128

column_sql 方法有如下代码:

def column_sql(self, model, field, include_default=False):
 ...
 include_default = include_default and not self.skip_default(field)
 if include_default:
  default_value = self.effective_default(field)
  if default_value is not None:
   if self.connection.features.requires_literal_defaults:
    # Some databases can't take defaults as a parameter (oracle)
    # If this is the case, the individual schema backend should
    # implement prepare_default
    sql += " DEFAULT %s" % self.prepare_default(default_value)
   else:
    sql += " DEFAULT %s"
    params += [default_value] 
 ...

同文件 create_model 方法在调用 column_sql,方法时,没有传递参数,skip_default 方法始终返回False

知道了这些后,我们只需要自定义 include_default 的值就好

当数据库用mysql, longtext and longblob 设置默认值会报错

include_default = False if sql in ['longtext', 'longblob'] else True

以上这篇django 模型字段设置默认值代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python随机生成数模块random使用实例
Apr 13 Python
python对url格式解析的方法
May 13 Python
Python正则表达式分组概念与用法详解
Jun 24 Python
Python django实现简单的邮件系统发送邮件功能
Jul 14 Python
python numpy 按行归一化的实例
Jan 21 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
Jul 06 Python
Python终端输出彩色字符方法详解
Feb 11 Python
Python基于Socket实现简单聊天室
Feb 17 Python
解决django的template中如果无法引用MEDIA_URL问题
Apr 07 Python
Python selenium爬取微信公众号文章代码详解
Aug 12 Python
Python实现一个论文下载器的过程
Jan 18 Python
python实现控制台输出颜色
Mar 02 Python
django序列化时使用外键的真实值操作
Jul 15 #Python
Django:使用filter的pk进行多值查询操作
Jul 15 #Python
django models里数据表插入数据id自增操作
Jul 15 #Python
python报错: 'list' object has no attribute 'shape'的解决
Jul 15 #Python
解决运行出现'dict' object has no attribute 'has_key'问题
Jul 15 #Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
Jul 15 #Python
解决导入django_filters不成功问题No module named 'django_filter'
Jul 15 #Python
You might like
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
2013/01/19 PHP
phpstrom使用xdebug配置方法
2013/12/17 PHP
php实现比较全的数据库操作类
2015/06/18 PHP
启用Csrf后POST数据时出现的400错误
2015/07/05 PHP
Document 对象的常用方法
2009/07/31 Javascript
jquery怎样实现ajax联动框(一)
2013/03/08 Javascript
jQuery获得IE版本不准确webbrowser的解决方法
2014/02/23 Javascript
angularjs学习笔记之双向数据绑定
2015/09/26 Javascript
Vue2.0 UI框架ElementUI使用方法详解
2017/04/14 Javascript
详解IWinter 一个路由转控制器的 Nodejs 库
2017/11/15 NodeJs
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
2019/01/24 Javascript
微信小程序单选radio及多选checkbox按钮用法示例
2019/04/30 Javascript
DatePickerDialog 自定义样式及使用全解
2019/07/09 Javascript
Vue组件间通信 Vuex的用法解析
2019/08/05 Javascript
使用JS location实现搜索框历史记录功能
2019/12/23 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
使用next.js开发网址缩短服务的方法
2020/06/17 Javascript
[01:02:26]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第二场 1月18日
2021/03/11 DOTA
pandas数值计算与排序方法
2018/04/12 Python
Python使用numpy模块创建数组操作示例
2018/06/20 Python
python批量将excel内容进行翻译写入功能
2019/10/10 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
2020/02/10 Python
5款实用的python 工具推荐
2020/10/13 Python
网页中的电话号码如何实现一键直呼效果_附示例
2016/03/15 HTML / CSS
英国领先的野生鸟类食品供应商:GardenBird
2018/08/09 全球购物
几个Linux面试题笔试题
2016/08/01 面试题
农药学硕士毕业生自荐信
2013/09/25 职场文书
将相和教学反思
2014/02/04 职场文书
手机促销活动方案
2014/02/05 职场文书
厂办主管岗位职责范本
2014/02/28 职场文书
装修施工安全责任书
2014/07/24 职场文书
部队2014年终工作总结
2014/11/27 职场文书
2015年度个人业务工作总结
2015/04/27 职场文书
2019入党申请书格式
2019/06/25 职场文书
MySQL锁机制
2021/04/05 MySQL
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python