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操作MySQL数据库9个实用实例
Dec 11 Python
Python编程中对文件和存储器的读写示例
Jan 25 Python
使用Python对Access读写操作
Mar 30 Python
Django如何实现内容缓存示例详解
Sep 24 Python
python读取中文txt文本的方法
Apr 12 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
Oct 14 Python
Python中extend和append的区别讲解
Jan 24 Python
python批量修改文件夹及其子文件夹下的文件内容
Mar 15 Python
Python定时任务随机时间执行的实现方法
Aug 14 Python
python实现机器人卡牌
Oct 06 Python
Python绘制动态水球图过程详解
Jun 03 Python
Python Django路径配置实现过程解析
Nov 05 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/07/23 PHP
PHP模块 Memcached功能多于Memcache
2011/06/14 PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
2020/07/19 PHP
jQuery 技巧大全(新手入门篇)
2009/05/12 Javascript
由点击页面其它地方隐藏div所想到的jQuery的delegate
2013/08/29 Javascript
JS中的异常处理方法分享
2013/12/22 Javascript
浅析js设置控件的readonly与enabled属性问题
2013/12/25 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
2016/04/01 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
2016/06/14 Javascript
AngularJS基础 ng-mousemove 指令简单示例
2016/08/02 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
2016/10/26 Javascript
vue使用stompjs实现mqtt消息推送通知
2017/06/22 Javascript
基于JS递归函数细化认识及实用实例(推荐)
2017/08/07 Javascript
jQuery中.attr()和.data()的区别分析
2017/09/03 jQuery
angularjs结合html5实现拖拽功能
2018/06/25 Javascript
微信小程序开发问题之wx.previewImage
2018/12/25 Javascript
图文讲解vue的v-if使用方法
2019/02/11 Javascript
基于Python中capitalize()与title()的区别详解
2017/12/09 Python
matplotlib实现区域颜色填充
2019/03/18 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
2020/05/26 Python
在keras中对单一输入图像进行预测并返回预测结果操作
2020/07/09 Python
Python模块zipfile原理及使用方法详解
2020/08/04 Python
Pyecharts 中Geo函数常用参数的用法说明
2021/02/01 Python
html5 canvas 使用示例
2010/10/22 HTML / CSS
html5指南-4.使用Geolocation实现定位功能
2013/01/07 HTML / CSS
大学总结自我鉴定
2014/01/18 职场文书
《挑山工》的教学反思
2014/02/16 职场文书
社区活动总结报告
2014/05/05 职场文书
小学优秀辅导员事迹材料
2014/05/11 职场文书
机关党建工作汇报材料
2014/08/20 职场文书
司考复习计划
2015/01/19 职场文书
青春雷锋观后感
2015/06/10 职场文书
计算机实训心得体会
2016/01/14 职场文书
2016年质量月活动总结报告
2016/04/05 职场文书
Go语言读取txt文档的操作方法
2022/01/22 Golang