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通过colorama模块在控制台输出彩色文字的方法
Mar 19 Python
Python中splitlines()方法的使用简介
May 20 Python
Python 专题三 字符串的基础知识
Mar 19 Python
Python随机读取文件实现实例
May 25 Python
Python获取Redis所有Key以及内容的方法
Feb 19 Python
在Python中如何传递任意数量的实参的示例代码
Mar 21 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
Apr 18 Python
Keras 快速解决OOM超内存的问题
Jun 11 Python
解决tensorflow 释放图,删除变量问题
Jun 23 Python
python 实现波浪滤镜特效
Dec 02 Python
python中的列表和元组区别分析
Dec 30 Python
python和C/C++混合编程之使用ctypes调用 C/C++的dll
Apr 29 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新手谈谈我的学习心得
2007/02/25 PHP
php 读取shell管道传输过来的内容
2010/03/01 PHP
关于PHP实现异步操作的研究
2013/02/03 PHP
phpstorm配置Xdebug进行调试PHP教程
2014/12/01 PHP
一个简单安全的PHP验证码类、PHP验证码
2016/09/24 PHP
php版交通银行网银支付接口开发入门教程
2016/09/26 PHP
Yii框架模拟组件调用注入示例
2019/11/11 PHP
类似GMAIL的Ajax信息反馈显示
2010/02/16 Javascript
Jquery从头学起第四讲 jquery入门教程
2010/08/01 Javascript
javascript中的绑定与解绑函数应用示例
2013/06/24 Javascript
在AngularJS中如何使用谷歌地图把当前位置显示出来
2016/01/25 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
@ResponseBody 和 @RequestBody 注解的区别
2017/03/08 Javascript
react实现点击选中的li高亮的示例代码
2018/05/24 Javascript
axios使用拦截器统一处理所有的http请求的方法
2018/11/02 Javascript
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
2019/10/29 Javascript
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
CentOS 6.5中安装Python 3.6.2的方法步骤
2017/12/03 Python
Python读取txt内容写入xls格式excel中的方法
2018/10/11 Python
selenium处理元素定位点击无效问题
2019/06/12 Python
python 图片去噪的方法示例
2019/07/09 Python
Python多线程及其基本使用方法实例分析
2019/10/29 Python
python实现将一维列表转换为多维列表(numpy+reshape)
2019/11/29 Python
浅谈图像处理中掩膜(mask)的意义
2020/02/19 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
2020/03/02 Python
浅谈Python程序的错误:变量未定义
2020/06/02 Python
Python远程linux执行命令实现
2020/11/11 Python
全面解析HTML5中的标准属性与自定义属性
2016/02/18 HTML / CSS
电气自动化大学生求职信
2013/10/16 职场文书
公司晚会主持词
2014/03/22 职场文书
党的群众路线对照检查材料范文
2014/09/24 职场文书
2014年环境卫生工作总结
2014/11/24 职场文书
2014年机关后勤工作总结
2014/12/16 职场文书
七年级之开学家长寄语35句
2019/09/05 职场文书
SpringBoot整合Minio文件存储
2022/04/03 Java/Android