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的Flask框架来搭建第一个Web应用程序
Jun 04 Python
python安装numpy&安装matplotlib& scipy的教程
Nov 02 Python
使用python生成目录树
Mar 29 Python
TensorFlow实现卷积神经网络
May 24 Python
python使用tornado实现登录和登出
Jul 28 Python
python进阶之多线程对同一个全局变量的处理方法
Nov 09 Python
Python 数值区间处理_对interval 库的快速入门详解
Nov 16 Python
对python遍历文件夹中的所有jpg文件的实例详解
Dec 08 Python
Django框架 querySet功能解析
Sep 04 Python
Python使用random模块生成随机数操作实例详解
Sep 17 Python
pytorch中的transforms模块实例详解
Dec 31 Python
Python reversed反转序列并生成可迭代对象
Oct 22 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 命名空间实例说明
2011/01/27 PHP
PHP中使用gettext解决国际化问题的例子(i18n)
2014/06/13 PHP
又一个PHP实现的冒泡排序算法分享
2014/08/21 PHP
php实现面包屑导航例子分享
2015/12/19 PHP
Composer设置忽略版本匹配的方法
2016/04/27 PHP
很酷的javascript loading效果代码
2008/06/18 Javascript
js从Cookies里面取值的简单实现
2014/06/30 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
网页中JS函数自动执行常用三种方法
2016/03/30 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
jQuery层级选择器实例代码
2017/02/06 Javascript
JavaScript对象引用与赋值实例详解
2017/03/15 Javascript
微信小程序 侧滑删除(左滑删除)
2017/05/23 Javascript
Vue 实现从小到大的横向滑动效果详解
2019/10/16 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
基于windows下pip安装python模块时报错总结
2018/06/12 Python
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
python pandas.DataFrame.loc函数使用详解
2020/03/26 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
通过代码实例了解Python异常本质
2020/09/16 Python
OpenCV读取与写入图片的实现
2020/10/13 Python
加拿大奢华时装品牌:Mackage
2018/01/10 全球购物
雷曼兄弟的五金店:Lehman’s Hardware Store
2019/04/10 全球购物
高级Java程序员面试题
2016/06/23 面试题
高中自我评价范文
2014/01/27 职场文书
求职意向书
2014/04/01 职场文书
《风筝》教学反思
2014/04/10 职场文书
植树造林的宣传标语
2014/06/23 职场文书
绘画专业自荐信
2014/07/04 职场文书
财务工作犯错检讨书
2014/10/07 职场文书
钱塘江大潮导游词
2015/02/03 职场文书
详解Python类和对象内容
2021/06/22 Python
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL
Win11 PC上的Outlook搜索错误怎么办?
2022/07/15 数码科技