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. 解决delphi10.2.3 android tools闪退

    解决delphi10.2.3 android tools闪退 修改D:\Program Files (x86)\Embarcadero\Studio\19.0\PlatformSDKs\android ...

  2. Chrome下flash无法显示多个的问题。

    $(document).ready(function(){ if(window.navigator.appVersion.match(/Chrome/)) { jQuery('object').eac ...

  3. Afreechart很强大的图表库,支持股票曲线图,饼图,曲线

    Afreechart是一个很强大的图表库,支持股票曲线图,饼图,曲线等.源码下载:http://www.23code.com/afreechart/

  4. Oracle 11gR2 RAC的两个bug

      Oracle 11.2.0.2 bug还是不少的.很多库迁到Oracle 11.2.0.2后都遇到了问题.现在正在跟的两个Oracle 11.2.0.2上的问题:1.ORA-00600: inte ...

  5. java访问ad域

    1.活动目录(AD) Active Directory 是用于 Windows Server 的目录服务.它存储着网络上各种对象的有关信息,并使该信息易于管理员和用户查找及使用.Active Dire ...

  6. 一份不太简短的LaTeX教程 lshort – A short in­tro­duc­tion to LATEX 2elshort – A short in­tro­duc­tion to LATEX 2e

    Lshort started as a trans­la­tion and ra­tio­nal­i­sa­tion of a ground-break­ing Ger­man-lan­guage i ...

  7. 前端对比插件JS

    https://github.com/kpdecker/jsdiff demo http://kpdecker.github.io/jsdiff/ 缺点:文件大于10M的就比较不了了 用于比对两段HT ...

  8. iOS: performXXX的几种方法总结:

    performXXX的用法: 视图切换: ※根据segue标识符切换视图 performSegueWithIdentifier:(NSString *) identifier sender:(id) ...

  9. centOS6.5 Hadoop1.0.4安装

    前段时间去培训,按照教程装了一遍Hadoop.回来又重新装一次,捋下思路,加深理解. 基本配置如下,三个节点,一个namenode,两个datanode. Namenode 192.168.59.14 ...

  10. python学习:Windows 下 Python easy_install 的安装

    Windows 下 Python easy_install 的安装     下载安装python安装工具下载地址:http://pypi.python.org/pypi/setuptools 可以找到 ...