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 Django做网页
Nov 04 Python
在Python的Django框架下使用django-tagging的教程
May 30 Python
Python2中的raw_input() 与 input()
Jun 12 Python
python在不同层级目录import模块的方法
Jan 31 Python
Python实现的异步代理爬虫及代理池
Mar 17 Python
Python实现对字符串的加密解密方法示例
Apr 29 Python
python最长回文串算法
Jun 04 Python
python中pip的安装与使用教程
Aug 10 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
Oct 15 Python
Python中文编码知识点
Feb 18 Python
python使用requests模块实现爬取电影天堂最新电影信息
Apr 03 Python
Python下利用BeautifulSoup解析HTML的实现
Jan 17 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
了解Joomla 这款来自国外的php网站管理系统
2010/03/11 PHP
php 获取本地IP代码
2013/06/23 PHP
深入Nginx + PHP 缓存详解
2013/07/11 PHP
Drupal读取Excel并导入数据库实例
2014/03/02 PHP
PHP自带方法验证邮箱是否存在
2016/02/01 PHP
一个JavaScript继承的实现
2006/10/24 Javascript
JS解密入门 最终变量劫持
2008/06/25 Javascript
Javascript中Eval函数的使用
2010/03/23 Javascript
js模仿html5 placeholder适应于不支持的浏览器
2013/01/13 Javascript
从零学JS之你需要了解的几本书
2014/05/19 Javascript
js实现点击后将文字或图片复制到剪贴板的方法
2014/08/04 Javascript
js为什么不能正确处理小数运算?
2015/12/29 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
在web中js实现类似excel的表格控件
2016/09/01 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(2)
2017/02/20 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
2017/11/09 Javascript
JS中使用textPath实现线条上的文字
2017/12/25 Javascript
JS实现简单省市二级联动
2019/11/27 Javascript
Vue实现移动端拖拽交换位置
2020/07/29 Javascript
OpenLayers加载缩放控件使用方法详解
2020/09/25 Javascript
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
python连接数据库的方法
2017/10/19 Python
python如何统计代码运行的时长
2019/07/24 Python
浅析PEP572: 海象运算符
2019/10/15 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
2021/02/03 Python
日期和时间问题
2015/01/04 面试题
股份合作协议书
2014/04/12 职场文书
小学生环保演讲稿
2014/04/25 职场文书
作风年建设汇报材料
2014/08/14 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
公务员个人总结
2015/02/12 职场文书
道士塔读书笔记
2015/06/30 职场文书
军训阅兵新闻稿
2015/07/17 职场文书
PyMongo 查询数据的实现
2021/06/28 Python
Django框架中模型的用法
2022/06/10 Python