Django模型中介绍

Django模型中介绍

  • 模型中的属性介绍
    • 一,类属性概述
      • 1. Django工具属性的类型确定以下信息
      • 2. Django的主键
      • 3. 属性命名限制
    • 二,库
      • 1.库的定义
      • 2. 使用方式
    • 三,逻辑删除
    • 四,字段类型
      • 1. AutoField
      • 2. CharField(max_length=字符长度)
      • 3. TextField
      • 4. IntergerField
      • 5. DecimalField(max_digits=None,decimal_places=None)
      • 6. FloatField
      • 7. BooleanField
      • 8. NullBooleanField
      • 9.DateField(auto_now=False,auto_now_add=False)
      • 10. TimeFiled
      • 11. DateTimeField
      • 12. FileField
      • 13. ImageField
    • 五,字段选项
      • 1. 概述:
      • 2. 字段值
    • 六,关系
      • 1. 分类:
      • 2. 访问方式
    • 七,元选项
      • 1. 定义
      • 2. 示例代码:
  • 模型成员
    • 一,类属性
      • 1. 自定义的类属性
      • 2. objects:
      • 3. 自定义模型管理器:
      • 4. 自定义管理器Manager() 类
    • 二,创建对象
      • 1. 目的
      • 2. 注意:__init__方法已经在父类models.Model 中使用,在自定义的模型中无法使用
      • 3. 方法:
        • 1. 在模型类中增加一个类方法:
        • 2. 在定义管理器中添加一个方法:
  • 模型查询
    • 一,概述
      • 1.查询集
    • 二,查询集使用方法
      • 1. 管理器上调用过滤器方法
      • 2. 链式调用
      • 3. 惰性执行
      • 4. 直接访问数据的情况
      • 5. 返回查询集的方法称为过滤器
        • 1. all()
        • 2. filter()
        • 3. exclude()
        • 4. order by()
        • 5. values()
      • 6. 返回一条数据
        • 1. get()
        • 2. count()
        • 3. first()
        • 4. last()
        • 5. exists()
      • 7. 限制查询集
        • 1. 介绍
        • 2. 注意
      • 8. 查询集的缓存
        • 1. 概述
      • 9. 字段查询
        • 1. 概述
        • 2. 比较运算符
        • 3. 聚合函数
        • 4. F对象
        • 5.Q对象

模型中的属性介绍

一,类属性概述

1. Django工具属性的类型确定以下信息

  1. 当前选择的数据库支持的字段类型
  2. 渲染管理表单时使用的默认html控件
  3. 在管理站点最低限度的验证

2. Django的主键

  1. 会为表增加自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后,则Django不会再生成默认的主键列

3. 属性命名限制

  1. 不能是Python的保留关键字
  2. 由于Django的查询方式,不允许使用连续的下划线

二,库

1.库的定义

  1. 定义属性时,需要字段类型,字段类型被定义在django.db.models.fields 目录下,为了方便使用,被导入到django.db.models中

2. 使用方式

  1. 导入 from django.db import models
  2. 通过models.Field创建字段类型的对象,赋值给属性

三,逻辑删除

对于重要数据都做逻辑删除,不做物理删除,实现方法是定义isDelete属性,类型为BooleanField,默认值为False

四,字段类型

1. AutoField

  1. 介绍:一个根据实际ID自动增长的IntergerField,通常不指定,如果不指定,一个主键字段将自动添加到模型中

2. CharField(max_length=字符长度)

  1. 介绍:字符串,默认的表单样式是TextInput

3. TextField

  1. 介绍:大文本字段,一般超过4000字节使用,默认的表单控件是Textarea

4. IntergerField

  1. 介绍:整数

5. DecimalField(max_digits=None,decimal_places=None)

  1. 介绍:使用Python的Decimal实例表示的十进制浮点数
  2. 参数说明:
    1. DecimalField.max_digits – 位数总数
    2. DecimalField.decimal_places – 小数点后的数字位数

6. FloatField

  1. 介绍:用Python的float实例来表示的浮点数

7. BooleanField

  1. 介绍:true/false 字段,此字段的默认表单控制是CheckboxInput

8. NullBooleanField

  1. 介绍:支持null,true,false三种值

9.DateField(auto_now=False,auto_now_add=False)

  1. 介绍:使用Python的datetime.date实例表示的日期
  2. 参数说明:
    1. DateField.auto_now 每次保存对象时,自动设置该字段为当前时间,用于“最后一次修改”的时间戳,他总是使用当前日期,默认为False
    2. DateField.auto_now_add 当对象第一次被创建时自动设置当前时间,用于创建的时间戳,他总是使用当前日期,默认为False
  3. 说明:该字段默认对应的表单控件是一个TextInput,在管理员站点添加了一个JavaScript写的日历控件,和一个“Today”的快捷按钮,包含了一个额外的invalid_date错误消息键
  4. 注意:auto_now,auto_now_add,and default 这些设置是相互排斥的,他们之间的任何组合将会发生错误的结果

10. TimeFiled

  1. 介绍:使用Python的datetime.time 实例表示的时间,参数同DateField

11. DateTimeField

  1. 介绍:使用Python的datetime ,datetime 实例表示的日期和时间,参数同DateField

12. FileField

  1. 介绍:一个上传文件的字段

13. ImageField

  1. 介绍:继承了FileField 的所有属性和方法,但对上传的对象进行校验,确保它是一个有效的image

五,字段选项

1. 概述:

  1. 通过字段选项,可以实现对字段的约束
  2. 在字段对象时通过关键字参数指定

2. 字段值

  1. null:如果为True,Django将空值以NULL 存储到数据库中,默认值是False
  2. blank:如果为True,则该字段允许为空白,默认值是False
    注意:null是数据库范畴的概念,blank是表单验证范畴的
  3. db_column:字段的名称,如果未指定,则使用属性的名称
  4. db_index:若值为True,则在表中会为此字段创建索引
  5. default:默认值
  6. primary_key:若为True,则该字段会成为模型的主键字段
  7. unique:若为True,这个字段在表中必须有唯一值

六,关系

1. 分类:

  1. ForeignKey:一对多,将字段定义在多的端中
  2. ManyToManyField:多对多,将字段定义在两端中
  3. OneToOneField:一对一,将字段定义在任意一端中

2. 访问方式

  1. 用一访问多:
    格式:对象.模型类小写_set
    示例:grade.students_set
  2. 用一访问一:
    格式:对象.模型类小写
    示例:grade.students
  3. 访问id:
    格式:对象.属性_id
    示例:student.sgrade_id

七,元选项

1. 定义

在模型类中定义Meta类,用于设置元信息

2. 示例代码:

class Meta:
	# 定义数据表名,推荐使用小写,默认为项目小写_类名小写
	db_table = 'students'
	# 对象的默认排序字段,获取对象的列表时使用
	ordering = ['id'] # 升序
	# ordering = ['-id'] # 降序
	# 注意:排序会增加数据库开销

模型成员

你可能感兴趣的:(python学习,python,django)