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绘图库Matplotlib的安装
Jul 03 Python
在Python上基于Markov链生成伪随机文本的教程
Apr 17 Python
Python3实现发送QQ邮件功能(附件)
Dec 23 Python
python实现比较文件内容异同
Jun 22 Python
Windows系统下PhantomJS的安装和基本用法
Oct 21 Python
Python的几种主动结束程序方式
Nov 22 Python
用Python实现校园通知更新提醒功能
Nov 23 Python
python字典setdefault方法和get方法使用实例
Dec 25 Python
python中元组的用法整理
Jun 15 Python
让文件路径提取变得更简单的Python Path库
May 27 Python
python基础之错误和异常处理
Oct 24 Python
python程序的组织结构详解
Dec 06 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 动态随机生成验证码类代码
2010/04/09 PHP
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
浅谈PHP中foreach/in_array的使用
2015/11/02 PHP
PHP输出XML格式数据的方法总结
2017/02/08 PHP
extJs 下拉框联动实现代码
2010/04/09 Javascript
IE6中使用position导致页面变形的解决方案(js代码)
2011/01/09 Javascript
javaScript使用EL表达式的几种方式
2014/05/27 Javascript
jQuery CSS3自定义美化Checkbox实现代码
2016/05/12 Javascript
json传值以及ajax接收详解
2016/05/24 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
原生JS实现图片轮播效果
2016/12/26 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
2016/12/26 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
2017/03/23 Javascript
慕课网题目之js实现抽奖系统功能
2017/09/19 Javascript
JS正则表达式完美实现身份证校验功能
2017/10/18 Javascript
JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例
2018/12/14 Javascript
bootstrap 日期控件 datepicker被弹出框dialog覆盖的解决办法
2019/07/09 Javascript
在Vue中实现随hash改变响应菜单高亮
2020/03/09 Javascript
python根据出生年份简单计算生肖的方法
2015/03/27 Python
python获取命令行输入参数列表的实例代码
2018/06/23 Python
python中的turtle库函数简单使用教程
2018/07/23 Python
python如何发布自已pip项目的方法步骤
2018/10/09 Python
Pandas Shift函数的基础入门学习笔记
2018/11/16 Python
使用python3实现操作串口详解
2019/01/01 Python
python将控制台输出保存至文件的方法
2019/01/07 Python
pyqt5利用pyqtDesigner实现登录界面
2019/03/28 Python
Python2.7实现多进程下开发多线程示例
2019/05/31 Python
Python pandas自定义函数的使用方法示例
2019/11/20 Python
阿联酋最好的手机、电子产品和家用电器网上商店:Eros Digital Home
2020/08/09 全球购物
介绍一下.NET构架下remoting和webservice
2014/05/08 面试题
财务管理专业推荐信
2013/11/19 职场文书
期末考试动员演讲稿
2014/01/10 职场文书
幽灵公主观后感
2015/06/09 职场文书
合同补充协议书
2016/03/24 职场文书
SpringBoot2零基础到精通之异常处理与web原生组件注入
2022/03/22 Java/Android