博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django源码解析之BigIntegerField (一)
阅读量:6513 次
发布时间:2019-06-24

本文共 1581 字,大约阅读时间需要 5 分钟。

 

要分析django的源码,来更深入的学习django,是一个不错的方法,可惜需要大量的时间。

所以,能分析多少就是多少吧。

本次源码分析以1.4.16为基础。

 

用sublime 打开下载的源码,使用 Find in Folder,查找BigIntegerField 

在其中可以看到这样的代码:

1  1005      def formfield(self, **kwargs):2  1006:         defaults = {
'min_value': -BigIntegerField.MAX_BIGINT - 1,3 1007: 'max_value': BigIntegerField.MAX_BIGINT}

这段代码在

Django-1.4.16\django\db\models\fields\__init__.py

这是一个表单验证的部分,我们很容易就看到BigIntegerField 出现了最大值和最小值,搜索MAX_BIGINT

1  1000:     MAX_BIGINT = 9223372036854775807

在 1000行处

到此,我们很容易的确定了

BigIntegerField 的取值范围是 [-9223372036854775808,9223372036854775807]

 


 

下面是 BigIntegerField 

 

1 class BigIntegerField(IntegerField): 2     empty_strings_allowed = False 3     description = _("Big (8 byte) integer") 4     MAX_BIGINT = 9223372036854775807 5  6     def get_internal_type(self): 7         return "BigIntegerField" 8  9     def formfield(self, **kwargs):10         defaults = {
'min_value': -BigIntegerField.MAX_BIGINT - 1,11 'max_value': BigIntegerField.MAX_BIGINT}12 defaults.update(kwargs)13 return super(BigIntegerField, self).formfield(**defaults)

我们可以看出,BigIntegerField 是继承自 IntegerField 

虽然还有很多内容我们不了解,但是我们慢慢分析,总会弄清楚的,不要太着急。

 

 


 

在最新的 django 1.7.1中

在\django\db\backends\__init__.py

744          'SmallIntegerField': (-32768, 32767),  745          'IntegerField': (-2147483648, 2147483647),  746:         'BigIntegerField': (-9223372036854775808, 9223372036854775807),  747          'PositiveSmallIntegerField': (0, 32767),  748          'PositiveIntegerField': (0, 2147483647),

很显然,版本升级后 BigIntegerField 取值范围并没有发生变化

转载地址:http://wwsfo.baihongyu.com/

你可能感兴趣的文章
ecshop如何判断缓存文件是否能更新
查看>>
javascript于boolean类型转换,运营商&&和|| 返回值
查看>>
Socket tips: UDP Echo service - Client code
查看>>
深入分析面向对象中的封装作用
查看>>
深刻理解Python中的元类(metaclass)
查看>>
Java编程的逻辑 (44) - 剖析TreeSet
查看>>
address元素
查看>>
Android View体系(六)从源码解析Activity的构成
查看>>
详解ASP.NET Core Docker部署
查看>>
fnmatch源码阅读
查看>>
U9249 【模板】BSGS
查看>>
单片机小白学步系列(九) 用万用焊板搭建实验电路
查看>>
Tomcat PK Resin
查看>>
(转)全文检索技术学习(三)——Lucene支持中文分词
查看>>
Node.js+Koa开发微信公众号个人笔记(一)准备工作
查看>>
Android 图片缓存处理
查看>>
elasticsearch
查看>>
阿里盒马领域驱动设计实践
查看>>
vuex 存值 及 取值 的操作
查看>>
HDU 2242 考研路茫茫——空调教室(边双连通)
查看>>