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 相关文章推荐
django 自定义用户user模型的三种方法
Nov 18 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
Apr 18 Python
python基于物品协同过滤算法实现代码
May 31 Python
利用Python将数值型特征进行离散化操作的方法
Nov 06 Python
python绘制中国大陆人口热力图
Nov 07 Python
python通过http下载文件的方法详解
Jul 26 Python
python列表插入append(), extend(), insert()用法详解
Sep 14 Python
python实现的多任务版udp聊天器功能案例
Nov 13 Python
TFRecord格式存储数据与队列读取实例
Jan 21 Python
python实现密码强度校验
Mar 18 Python
Python如何读取、写入CSV数据
Jul 28 Python
详解Python利用configparser对配置文件进行读写操作
Nov 03 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
调频问题解答
2021/03/01 无线电
PHP var_dump遍历对象属性的函数与应用代码
2010/06/04 PHP
php 抽象类的简单应用
2011/09/06 PHP
php实现用户在线时间统计详解
2011/10/08 PHP
PHP最常用的2种设计模式工厂模式和单例模式介绍
2012/08/14 PHP
浅析Yii2中GridView常见操作
2016/04/22 PHP
thinkphp实现分页显示功能
2016/12/03 PHP
jQuery ui1.7 dialog只能弹出一次问题
2009/08/27 Javascript
基于jquery的点击链接插入链接内容的代码
2012/07/31 Javascript
JavaScript笔记之数据属性和存储器属性
2016/03/31 Javascript
响应式表格之固定表头的简单实现
2016/08/26 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
完美解决mui框架off-canvas侧滑超出部分隐藏无法滚动的问题
2018/01/25 Javascript
使用koa2创建web项目的方法步骤
2019/03/12 Javascript
vue实现简单图片上传
2020/06/30 Javascript
[02:07]2017国际邀请赛中国区预选赛直邀战队前瞻
2017/06/23 DOTA
用virtualenv建立多个Python独立虚拟开发环境
2017/07/06 Python
python贪婪匹配以及多行匹配的实例讲解
2018/04/19 Python
基于python log取对数详解
2018/06/08 Python
在Python中获取两数相除的商和余数方法
2018/11/10 Python
Python两台电脑实现TCP通信的方法示例
2019/05/06 Python
Python自动抢红包教程详解
2019/06/11 Python
python pytest进阶之xunit fixture详解
2019/06/27 Python
Python图像处理库PIL的ImageFont模块使用介绍
2020/02/26 Python
Mac中PyCharm配置Anaconda环境的方法
2020/03/04 Python
python Selenium 库的使用技巧
2020/10/16 Python
Python3 用matplotlib绘制sigmoid函数的案例
2020/12/11 Python
python 实现socket服务端并发的四种方式
2020/12/14 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
2020/12/18 Python
使用sublime text3搭建Python编辑环境的实现
2021/01/12 Python
CSS3制作3D立方体loading特效
2020/11/09 HTML / CSS
赢在执行观后感
2015/06/16 职场文书
高中班主任培训心得体会
2016/01/07 职场文书
导游词之寿县报恩寺
2020/01/19 职场文书
SpringBoot2零基础到精通之数据与页面响应
2022/03/22 Java/Android
Go语言编译原理之变量捕获
2022/08/05 Golang