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下singleton模式的实现方法
Jul 16 Python
python调用fortran模块
Apr 08 Python
python监测当前联网状态并连接的实例
Dec 18 Python
python 调用有道api接口的方法
Jan 03 Python
对python中类的继承与方法重写介绍
Jan 20 Python
用Python抢火车票的简单小程序实现解析
Aug 14 Python
Python values()与itervalues()的用法详解
Nov 27 Python
Python实现密码薄文件读写操作
Dec 16 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
Apr 13 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
Apr 22 Python
详解python内置模块urllib
Sep 09 Python
Django Form常用功能及代码示例
Oct 13 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大小写问题:函数名和类名不区分,变量名区分
2013/06/17 PHP
PHP添加图片水印、压缩、剪切的封装类
2015/08/17 PHP
Javascript Tab 导航插件 (23个)
2009/06/11 Javascript
使用jQueryMobile实现滑动翻页效果的方法
2015/02/04 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
JS实现黑色大气的二级导航菜单效果
2015/09/18 Javascript
JS打印组合功能
2016/08/04 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
2016/08/15 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
小程序实现留言板
2018/11/02 Javascript
详解vue中使用protobuf踩坑记
2019/05/07 Javascript
vue视频播放暂停代码
2019/11/08 Javascript
vue+canvas实现移动端手写签名
2020/05/21 Javascript
[00:36]我的中国心——Serenity vs Fnatic
2018/08/21 DOTA
python中正则表达式的使用详解
2014/10/17 Python
python查看微信好友是否删除自己
2016/12/19 Python
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
使用pandas对矢量化数据进行替换处理的方法
2018/04/11 Python
numpy ndarray 取出满足特定条件的某些行实例
2019/12/05 Python
python输出数组中指定元素的所有索引示例
2019/12/06 Python
通过实例学习Python Excel操作
2020/01/06 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
一些关于python 装饰器的个人理解
2020/08/31 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
2020/11/13 Python
伦敦新晋轻奢耳饰潮牌:Tada & Toy
2020/05/25 全球购物
大学生求职简历的自我评价
2013/10/14 职场文书
《三袋麦子》教学反思
2014/03/02 职场文书
考核评语大全
2014/04/29 职场文书
活动总结结尾怎么写
2014/08/30 职场文书
对外汉语专业大学生职业生涯规划书
2014/10/11 职场文书
2015年“公民道德宣传日”活动方案
2015/05/06 职场文书
go类型转换及与C的类型转换方式
2021/05/05 Golang
Python中的pprint模块
2021/11/27 Python
【2·13】一图读懂中国无线电发展
2022/02/18 无线电