djiango在数据库这方式自己实现了orm(object relationship mapping 对象关系模型映射)、这个主要是用到python 元类这一

项python中的高级技术来实现的。

class ModelBase(type):
def __new__(cls,name,bases,attrs):
# .....
pass pass class Model(metaclass=ModelBase):
pass # 在这之后所有的用户自定义模型都继承自Model类 class Person(Model):
name=CharField(max_length=8)

类就对应到了数据库中的一张表、而类的的属性就对应到了表中的列;如这里的Person类就对应到了person表,name属性就对应到了name列

上面例子中name属性的数据类型是CharField类型、这种类型与数据库端的char类型对应;在django中所以的列类型都继承自Field类型

class Feild(RegisterLookupMixin):
pass class AutoField(Field):
class BigAutoField(AutoField):
class BooleanField(Field):
class CharField(Field):
class CommaSeparatedIntegerField(CharField):
class DateTimeCheckMixin:
class DateField(DateTimeCheckMixin, Field):
class DateTimeField(DateField):
class DecimalField(Field):
class DurationField(Field):
class EmailField(CharField):
class FilePathField(Field):
class FloatField(Field):
class IntegerField(Field):
class BigIntegerField(IntegerField):
class IPAddressField(Field):
class GenericIPAddressField(Field):
class NullBooleanField(Field):
class PositiveIntegerRelDbTypeMixin:
class PositiveIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField):
class PositiveSmallIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField):
class SlugField(CharField):
class SmallIntegerField(IntegerField):
class TextField(Field):
class TimeField(DateTimeCheckMixin, Field):
class URLField(CharField):
class BinaryField(Field):
class UUIDField(Field):

----

django源码分析---- Model类型&Field类型的更多相关文章

  1. jQuery源码分析系列(36) : Ajax - 类型转化器

    什么是类型转化器? jQuery支持不同格式的数据返回形式,比如dataType为 xml, json,jsonp,script, or html 但是浏览器的XMLHttpRequest对象对数据的 ...

  2. django源码分析 python manage.py runserver

    django是一个快速开发web应用的框架, 笔者也在django框架上开发不少web应用,闲来无事,就想探究一下django底层到底是如何实现的,本文记录了笔者对django源码的分析过程 I be ...

  3. Django源码分析之启动wsgi发生的事

    前言 ​ 好多人对技术的理解都停留在懂得使用即可,因而只会用而不会灵活用,俗话说好奇害死猫,不然我也不会在凌晨1.48的时候决定写这篇博客,好吧不啰嗦了 ​ 继续上一篇文章,后我有个问题(上文:&qu ...

  4. django源码分析——本地runserver分析

    本文环境python3.5.2,django1.10.x系列 1.根据上一篇文章分析了,django-admin startproject与startapp的分析流程后,根据django的官方实例此时 ...

  5. 2、Django源码分析之启动wsgi发生了哪些事

    一 前言 Django是如何通过网络socket层接收数据并将请求转发给Django的urls层? 有的人张口就来:就是通过wsgi(Web Server Gateway Interface)啊! D ...

  6. django源码分析——处理请求到wsgi及视图view

    本文环境python3.5.2,django1.10.x系列 根据前上一篇runserver的博文,已经分析了本地调试服务器的大致流程,现在我们来分析一下当runserver运行起来后,django框 ...

  7. django源码分析

    原文网址 https://www.jianshu.com/p/17d78b52c732?utm_campaign=maleskine&utm_content=note&utm_medi ...

  8. django源码分析 LazySetting对象

    一.django中通过LazySetting对象来获取项目的配置,LazySetting对象有什么特性?为什么使用这个对象? LazySetting顾名思义,就是延迟获取配置内容.比如,我们定义了一个 ...

  9. yii2 源码分析 model类分析 (五)

    模型类是数据模型的基类.此类继承了组件类,实现了3个接口 先介绍一下模型类前面的大量注释说了什么: * 模型类是数据模型的基类.此类继承了组件类,实现了3个接口 * 实现了IteratorAggreg ...

随机推荐

  1. 大于非负整数N的第一个回文数 Symmetric Number

    1.题目 如标题,求大于整数N(N>=0)的第一个回文数的字符串表示形式. 2.样例 1  --> 2 9  -->11 12345 -->12421 123456 --> ...

  2. win7 64位 php环境开启curl服务Call to undefined function

    无法使用curl_init(),一般情况问题可能出在没有去加载php的扩展文件php_curl.dll(windows操作系统),但是检查了一下系统配置,发现,环境下已经将php.ini文件里 ;ex ...

  3. C# mvc 上传多个附件

    <div class="col-xs-12 mcp-list-item" style="margin-top:20px"> <div clas ...

  4. nodesj中 中间件express-session的理解

    1.为什么使用session? session运行在服务器端,当客户端第一次访问服务器时,可以将客户的登录信息保存. 当客户访问其他页面时,可以判断客户的登录状态,做出提示,相当于登录拦截. sess ...

  5. Windows下生成 公钥 私钥以及 配置 Filezilla中的 SFTP的私钥

    Win下需要使用到 PuTTYgen.exe来生成公钥私钥,可以参考youtube的这篇文章:  为 SFTP 保管箱生成 Secure Shell (SSH) 密钥对 PuTTYgen.exe的下载 ...

  6. CDK安装

    1.下载cdk https://developers.redhat.com/products/cdk/download/ 2.在mac OS上更名并加入目录 $ mkdir -p ~/bin $ cp ...

  7. phantomjs 抓取房产信息

    抓取https://sf.taobao.com/item_list.htm信息 driver=webdriver.PhantomJS(service_args=['--ssl-protocol=any ...

  8. android 步骤控件的使用

    有的时候我们做Android开发会用到表示步骤的需求.这时候github给我们提供了一个非常好地表示步骤的组件,使用她仅仅须要4步就能够完毕了. 项目地址https://github.com/anto ...

  9. 一般源码安装添加的GD库 是不支持 jpeg 格式的图片的

    一般源码安装添加的GD库 是不支持 jpeg 格式的图片的,只支持如下格式 GD Support enabled GD Version bundled (2.0.34 compatible) GIF ...

  10. [Angular] AfterContentChecked && AfterViewChecked

    AfterContentChecked & AfterViewChecked are called after 'OnChanges' lifecycle. And each time 'ng ...