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爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
Feb 23 Python
python中找出numpy array数组的最值及其索引方法
Apr 17 Python
利用Anaconda简单安装scrapy框架的方法
Jun 13 Python
在Python中,不用while和for循环遍历列表的实例
Feb 20 Python
Python基于mysql实现学生管理系统
Feb 21 Python
python中如何使用分步式进程计算详解
Mar 22 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
Aug 27 Python
Python文件操作模拟用户登陆代码实例
Jun 09 Python
Keras中的多分类损失函数用法categorical_crossentropy
Jun 11 Python
python中查看.db文件中表格的名字及表格中的字段操作
Jul 07 Python
DRF框架API版本管理实现方法解析
Aug 21 Python
Python利用FlashText算法实现替换字符串
Mar 31 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中去掉字符串首尾空格的方法
2012/05/19 PHP
深入浅析php json 格式控制
2015/12/24 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
php 基础函数
2017/02/10 PHP
PHP实现网站访问量计数器
2017/10/27 PHP
javascript实现的listview效果
2007/04/28 Javascript
jQuery选择器全集详解
2014/11/24 Javascript
Javascript小技能总结(推荐)
2016/06/02 Javascript
AngularJS 模块详解及简单实例
2016/07/28 Javascript
JavaScript中原型链存在的问题解析
2016/09/25 Javascript
js操作浏览器的参数方法
2017/01/21 Javascript
JQuery中Ajax的操作完整例子
2017/03/07 Javascript
JavaScript实现的商品抢购倒计时功能示例
2017/04/17 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
2017/04/20 jQuery
bootstrap table服务端实现分页效果
2017/08/10 Javascript
Vue基于NUXT的SSR详解
2017/10/24 Javascript
Python 装饰器使用详解
2017/07/29 Python
Python3 适合初学者学习的银行账户登录系统实例
2017/08/08 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
Python TestCase中的断言方法介绍
2019/05/02 Python
pytorch 把图片数据转化成tensor的操作
2021/03/04 Python
Html5 webRTC简单实现视频调用的示例代码
2020/09/23 HTML / CSS
HTML5超文本标记语言的实现方法
2020/09/24 HTML / CSS
美国著名首饰网站:BaubleBar
2016/08/29 全球购物
阿联酋电子产品购物网站:Menakart
2017/09/15 全球购物
NYX Professional Makeup俄罗斯官网:世界知名的化妆品品牌
2019/12/26 全球购物
大学生自我鉴定范文模板
2014/01/21 职场文书
爱情检讨书大全
2014/01/21 职场文书
机关保密承诺书
2014/06/03 职场文书
个人党性分析材料
2014/12/19 职场文书
授权委托书
2015/01/28 职场文书
最感人的道歉情书
2015/05/12 职场文书
实习证明模板
2015/06/16 职场文书
文艺委员竞选稿
2015/11/19 职场文书
深度学习详解之初试机器学习
2021/04/14 Python
深入浅析python3 依赖倒置原则(示例代码)
2021/07/09 Python