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 Django连接MySQL数据库做增删改查
Nov 07 Python
python BeautifulSoup设置页面编码的方法
Apr 03 Python
基于python的Tkinter实现一个简易计算器
Dec 31 Python
python获取指定时间差的时间实例详解
Apr 11 Python
对Python信号处理模块signal详解
Jan 09 Python
pandas去除重复列的实现方法
Jan 29 Python
python selenium 执行完毕关闭chromedriver进程示例
Nov 15 Python
python 实现矩阵按对角线打印
Nov 29 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
Dec 27 Python
Python dict和defaultdict使用实例解析
Mar 12 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
Jun 11 Python
详细分析Python垃圾回收机制
Jul 01 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设计模式 Singleton(单例模式)
2011/06/26 PHP
ThinkPHP关联模型操作实例分析
2012/09/23 PHP
浅析PHP绘图技术
2013/07/03 PHP
PHP函数实现分页含文本分页和数字分页
2014/10/23 PHP
Thinkphp自定义生成缩略图尺寸的方法
2019/08/05 PHP
php 实现银联商务H5支付的示例代码
2019/10/12 PHP
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
JS中的log对象获取以及debug的写法介绍
2014/03/03 Javascript
document.forms用法示例介绍
2014/06/26 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
提升jQuery的性能需要做好七件事
2016/01/11 Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
2016/12/23 Javascript
JS计算输出100元钱买100只鸡问题的解决方法
2018/01/04 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
2019/07/04 jQuery
详解微信小程序支付流程与梳理
2019/07/16 Javascript
element-ui table行点击获取行索引(index)并利用索引更换行顺序
2020/02/27 Javascript
js实现网页随机验证码
2020/10/19 Javascript
[00:49]完美世界DOTA2联赛10月28日开团时刻:随便打
2020/10/29 DOTA
python对url格式解析的方法
2015/05/13 Python
远程部署工具Fabric详解(支持Python3)
2019/07/04 Python
python如何统计代码运行的时长
2019/07/24 Python
python文件操作的简单方法总结
2019/11/07 Python
Python网页解析器使用实例详解
2020/05/30 Python
Python如何截图保存的三种方法(小结)
2020/09/01 Python
python使用ctypes库调用DLL动态链接库
2020/10/22 Python
selenium+超级鹰实现模拟登录12306
2021/01/24 Python
美国地毯购买网站:Rugs USA
2019/02/23 全球购物
澳大利亚电商Catch新西兰站:Catch.co.nz
2020/05/30 全球购物
基于Python 函数和方法的区别说明
2021/03/24 Python
电子商务专业个人的自我评价
2013/11/19 职场文书
最新创业融资计划书
2014/01/19 职场文书
客服部工作职责范本
2014/02/14 职场文书
525心理活动总结
2014/07/04 职场文书
2014年大学生社会实践自我鉴定
2014/09/26 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
股东授权委托书
2014/10/15 职场文书