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. Codeforces Round #127 (Div. 1) E. Thoroughly Bureaucratic Organization 二分 数学

    E. Thoroughly Bureaucratic Organization 题目连接: http://www.codeforces.com/contest/201/problem/E Descri ...

  2. JS对象和数组

    /* 数组和对象 [JavaScript 权威指南 第五版] */ /* 对象: 是一个无序属性集合, 每个属性都有自己的名字和值 */ /* 创建对象简单方法, 对象直接量 */ var obj = ...

  3. linux命令查看开放哪些端口

    netstat -nupl (UDP类型的端口)netstat -ntpl (TCP类型的端口) a 表示所有 n表示不查询dns t表示tcp协议 u表示udp协议 p表示查询占用的程序 l表示查询 ...

  4. enum don't allocate any memory

    int main() { _asm{ mov edi,edi mov edi,edi } ,Green,Yellow}; _asm{ mov edi,edi mov edi,edi } Color c ...

  5. PHP作前端java作后台

    前两周参加完 ThinkInLamp 的 PHP 架构师大会,听鸟哥一上午的分享,感慨很多,PHP 业界虽然方向不明荒废了两三年的时间,终究还是又重新崛起了.其实包括 Java 的重启问题,现在也已经 ...

  6. Linux/Unix C编程之的perror函数,strerror函数,errno

    #include <stdio.h> // void perror(const char *msg); #include <string.h> // char *strerro ...

  7. sql server触发器复制记录

    Create Trigger test_tri5 on test after insert as begin declare @id sysname, @tel sysname, @name sysn ...

  8. TensorFlow进阶(一)----张量的阶和数据类型

    张量的阶和数据类型 TensorFlow用张量这种数据结构来表示所有的数据.你可以把一个张量想象成一个n维的数组或列表.一个张量有一个静态类型和动态类型的维数.张量可以在图中的节点之间流通.其实张量更 ...

  9. java程序计算数独游戏

    兴趣来了,写了个简单的数独游戏计算程序,未做算法优化. 通过文件来输入一个二维数组,9行,每行9个数组,数独游戏中需要填空的地方用0来表示.结果也是打印二维数组. import java.io.Fil ...

  10. 《深入理解Java虚拟机》笔记7

    组内有人问我,她写的程序总是在短时间内就jvm异常. 另外,debug时候又可以正常通过,写的逻辑并不复杂, 只是用poi检索Excel.第一反应还是程序可能写的有问题, 也许写了一个jvm未预测的错 ...