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闭包实现计数器的方法
May 05 Python
pymssql数据库操作MSSQL2005实例分析
May 25 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
May 08 Python
python opencv3实现人脸识别(windows)
May 25 Python
PHP实现发送和接收JSON请求
Jun 07 Python
解决.ui文件生成的.py文件运行不出现界面的方法
Jun 19 Python
如何使用python把ppt转换成pdf
Jun 29 Python
Python+AutoIt实现界面工具开发过程详解
Aug 07 Python
Python 50行爬虫抓取并处理图灵书目过程详解
Sep 20 Python
tensorflow 分类损失函数使用小记
Feb 18 Python
django 数据库返回queryset实现封装为字典
May 19 Python
教你使用pyinstaller打包Python教程
May 27 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程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
php微信开发之自定义菜单完整流程
2016/10/08 PHP
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
纯js实现瀑布流展现照片(自动适应窗口大小)
2013/04/08 Javascript
jQuery多级弹出菜单插件ZoneMenu
2014/12/18 Javascript
DOM基础教程之使用DOM控制表格
2015/01/20 Javascript
原生JS实现LOADING效果
2015/03/16 Javascript
使用JavaScript刷新网页的方法
2015/06/04 Javascript
Javascript基础知识盲点总结之函数
2016/05/15 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
AngularJS实现星星等级评分功能
2016/09/24 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
2016/10/09 Javascript
JS去掉字符串中所有的逗号
2017/10/18 Javascript
详解js正则表达式验证时间格式xxxx-xx-xx形式
2018/02/09 Javascript
vue-cli项目配置多环境的详细操作过程
2018/10/30 Javascript
vue项目中使用scss的方法步骤
2019/05/16 Javascript
gulp构建小程序的方法步骤
2019/05/31 Javascript
elementUI 动态生成几行几列的方法示例
2019/07/11 Javascript
vue+elementUI动态增加表单项并添加验证的代码详解
2020/12/17 Vue.js
vue项目中openlayers绘制行政区划
2020/12/24 Vue.js
[41:13]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第一场 11.20
2020/11/20 DOTA
讲解Python中fileno()方法的使用
2015/05/24 Python
python事件驱动event实现详解
2018/11/21 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
2019/11/05 Python
python @propert装饰器使用方法原理解析
2019/12/25 Python
基于Python实现下载网易音乐代码实例
2020/08/10 Python
巧克力领导品牌瑞士莲美国官网:Lindt Chocolate美国
2016/08/25 全球购物
英国和爱尔兰最大的地毯零售商:Kukoon
2018/12/17 全球购物
新加坡网上美容店:Hermo新加坡
2019/06/19 全球购物
英国最大的独立玩具专卖店:The Entertainer
2019/09/06 全球购物
介绍一下内联、左联、右联
2013/12/31 面试题
技校毕业生的自我评价
2013/12/27 职场文书
年终工作总结范文2014
2014/11/27 职场文书
创业计划书之都市休闲农庄
2019/12/28 职场文书
MySQL插入数据与查询数据
2022/03/25 MySQL
JavaScript中10个Reduce常用场景技巧
2022/06/21 Javascript