Django的模型类是给ORM层服务的

1.每个数据模型都是django.db.models.Model的子类。

2.它的父类Model包含了所有必要的和数据库交互的方法,并提供了定义数据库字段的语法。

3.每个模型相当于一个数据库表(这条规则的例外情况是多对多关系,多对多关系的时候会多生成一张关系表),

4.每个属性是表中的一个字段。属性名就是字段名,类型就是字段类型

5.模型之间的三种关系

  一对一(OneToOneField)
  一对多(ForeignKey)
  多对多(ManyToMangField)

6.把定义的模型放到models.py里,这里就是:hello_django\hello\models.py文件

7.语法 

  class MyModel(models.Model):
    name = models.CharField(max_length=30, verbose_name="名称")

    class Meta:
      verbose_name = '中文表明'
      verbose_name_plural = verbose_name

    def __str__(self):
      return self.name

  解释:

    a.通过class定义models名称也就是数据库的表名

    b.需要传入models.Model固定写法

    c.在class的内部,通过name=models.XXXField(params)定义字段

      c.1 models.XXXField常用选项

        BooleanField:布尔类型

        CharField:字符串varchar

        DateField:日期

        DateTimeField:时间戳

        DecimalField:带小数的数

      c.2 params常用选项:

        null(null=True|False)数据库字段的是否可以为空

        blank(blank=True|False)字段是否为空,表单验证

        default 字段默认值

        help_text 字段解释

        primary_key 主键,一般不用显示定义,框架自动生成个id

        unique 是否唯一,对数据库而言

        verbose_name 字段详细名称,通常写自己的中文含义

      c.3 详见:https://docs.djangoproject.com/en/1.9/ref/models/fields

    d.通过内部类class Meta定义一些扩展属性

      d.1例如:

        class Meta:
          verbose_name = '中文表明'
          verbose_name_plural = verbose_name

      d.2详见:https://docs.djangoproject.com/en/1.9/ref/models/options/

    e.可以通过def定义内部的函数或者重写他的函数,可以提供具体的逻辑

      e.1示例:定义__str__()让对象有个默认的名字(属于重写他的方法)

        备注:python2里用__unicode__(),python3里是__str__()

7.通过manage.py生成数据库表

  manage.py makemigrations  (创建脚本)

  manage.py migrate  (执行脚本)

8.在hello_django\hello\admin.py加入管理后,可在admin界面管理,代码如下

  from django.contrib import admin

  from hello.models import *

  # Register your models here.
  admin.site.register(Author)

7.Django模型类的定义和管理的更多相关文章

  1. Django(十)模型:django模型类对数据库的:增/删/改/查、自关联、管理器、元选项(指定表名)

    一.插入.更新和删除 调用一个模型类对象的save方法的时候就可以实现对模型类对应数据表的插入和更新. 调用一个模型类对象的delete方法的时候就可以实现对模型类对应数据表数据的删除. 二.自关联 ...

  2. Django模型Model的定义

    概述 Django对各种数据库提供了很好的支持,Django为这些数据库提供了统一的调用API,可以根据不同的业务需求选择不同的数据库. 模型.属性.表.字段间的关系 一个模型类在数据库中对应一张表, ...

  3. Django进阶Model篇002 - 模型类的定义

    一.创建数据模型. 实例: 作者模型:一个作者有姓名. 作者详情模型:把作者的详情放到详情表,包含性别.email 地址和出生日期,作者详情模型与作者模型之间是一对一的关系(OneToOneField ...

  4. Django模型类Meta元数据详解

    转自:https://my.oschina.net/liuyuantao/blog/751337 简介 使用内部的class Meta 定义模型的元数据,例如: from django.db impo ...

  5. django模型类

    模型类 ORM django中内嵌了ORM框架,ORM框架可以将类和数据表进行对应起来,只需要通过类和对象就可以对数据表进行操作. 在Django中主要是设计类:模型类. ORM另外一个作用:根据设计 ...

  6. Django | 模型类变更后生成迁移文件,报错:You are trying to add a non-nullable field 'BookName' to BookInfo without a default....

    报错: You are trying to add a non-nullable field 'BookName' to BookInfo without a default; we can't do ...

  7. 8.Django模型类例子

    这里定义4个模型 作者:一个作者有姓名 作者详情:包括性别,email,出生日期, 出版商:名称,地址,城市,省,国家,网站 书籍:名称,日期 分析: 作者详情和作者一对一的关系 一本书可以有多个作者 ...

  8. Django模型类之models字段类型和参数以及元数据meta

    models之字段类型和参数 示例: # class Test(models.Model): # courses_test # """测试学习用""& ...

  9. django 模型类的常见字段约束,以及filter 过滤和查询

    null 不设置时默认设置为False.设置为True时,数据库表字段中将存入NULL的记录. null和blank组合使用,null=True,blank=True,表示该字段可以为空 blank ...

随机推荐

  1. 【HTML 元素】标记文字

    1.用基本的文字元素标记内容 先看显示效果: 对应HTML代码: <!DOCTYPE html> <html lang="en"> <head> ...

  2. javascript 冒泡排序算法

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  3. c语言用rand() 函数,实现random(int m)

    函数rand()是真正的随机数生成器.而srand()会设置供rand()使用的随机数种子. 假设你在第一次调用rand()之前没有调用srand(),那么系统会为你自己主动调用srand(). 注意 ...

  4. java读取clob字段的几种方法

    http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380143fd3d1027fa3c215cc790f1a06 ...

  5. 转 WCF WebService区别

    下面我们来详细讨论一下二者的区别.Web Service和WCF的到底有什么区别. [1]Web Service:严格来说是行业标准,也就是Web Service 规范,也称作WS-*规范,既不是框架 ...

  6. 工作总结 无法确定条件表达式的类型,因为“<null>”和“System.DateTime”之间没有隐式转换 解决办法 object——Nullable<T> (可空类型)

    可空值类型 备注     一种类型认为是可以为 null,如果它可以分配一个值,也可以分配null,这意味着类型具有无论如何没有值. 默认情况下,所有都引用类型,如String,是否可以为 null, ...

  7. 固态硬盘(SSD) 和机 械硬盘(HDD) 优缺点比較

    Attribute SSD (Solid State Drive) HDD (Hard Disk Drive) Power Draw / Battery Life (功耗/电池寿命) Less pow ...

  8. 捕获网络数据包并进行分析的开源库-WinPcap

    什么是WinPcap WinPcap是一个基于Win32平台的,用于捕获网络数据包并进行分析的开源库. 大多数网络应用程序通过被广泛使用的操作系统元件来访问网络,比如sockets.  这是一种简单的 ...

  9. bzoj 2458: [BeiJing2011]最小三角形 题解

    [前言]话说好久没有写题解了.到暑假了反而忙.o(╯□╰)o [原题] 2458: [BeiJing2011]最小三角形 Time Limit: 10 Sec  Memory Limit: 128 M ...

  10. mysqldump默认参数add-drop-table

    mysqldump默认参数add-drop-table 原创 2014年01月28日 11:35:18 9214 接到一个同事电话,说UAT环境上的一张表被删了,要恢复一下.原来是新项目UAT,从测试 ...