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制作在地图上模拟瘟疫扩散的Gif图
Mar 31 Python
浅谈Python由__dict__和dir()引发的一些思考
Oct 30 Python
python中的set实现不重复的排序原理
Jan 24 Python
Python数据结构之图的应用示例
May 11 Python
基于DataFrame改变列类型的方法
Jul 25 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
Nov 29 Python
Django中提供的6种缓存方式详解
Aug 05 Python
Python字符串、列表、元组、字典、集合的补充实例详解
Dec 20 Python
使用TensorFlow直接获取处理MNIST数据方式
Feb 10 Python
python连接mongodb集群方法详解
Feb 13 Python
python字符串判断密码强弱
Mar 18 Python
matplotlib 范围选区(SpanSelector)的使用
Feb 24 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类
2008/04/09 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
2010/04/28 PHP
PHP编写RESTful接口
2016/02/23 PHP
php实现无限级分类查询(递归、非递归)
2016/03/10 PHP
详谈PHP中的密码安全性Password Hashing
2017/02/04 PHP
基于php流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
javascript不同页面传值的改进版
2008/09/30 Javascript
JS的事件绑定深入认识
2014/06/26 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
2014/09/23 Javascript
jquery使用正则表达式验证email地址的方法
2015/01/22 Javascript
详解JavaScript基本类型和引用类型
2015/12/09 Javascript
JavaScript的Backbone.js框架入门学习指引
2016/05/07 Javascript
基于JS实现数字+字母+中文的混合排序方法
2016/06/06 Javascript
javascript字符串对象常用api函数小结(连接,替换,分割,转换等)
2016/09/20 Javascript
jquery实现拖动效果(代码分享)
2017/01/25 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
微信小程序实现图片预览功能
2018/01/31 Javascript
CKeditor4 字体颜色功能配置方法教程
2019/06/26 Javascript
python生成指定尺寸缩略图的示例
2014/05/07 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
2016/05/17 Python
Python中Numpy mat的使用详解
2019/05/24 Python
Flask框架模板继承实现方法分析
2019/07/31 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
浅谈python的elementtree模块处理中文注意事项
2020/03/06 Python
在CentOS7下安装Python3教程解析
2020/07/09 Python
医学生求职自荐信
2013/10/25 职场文书
经济管理专业毕业生推荐信
2013/11/11 职场文书
给校长的建议书400字
2014/05/15 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
2014党的群众路线教育实践活动总结材料
2014/10/31 职场文书
2015年工商局个人工作总结
2015/07/23 职场文书
pytest进阶教程之fixture函数详解
2021/03/29 Python
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
2022/04/11 Vue.js