zoukankan      html  css  js  c++  java
  • Django中模型(二)

    Django中模型(二)

    三、定义模型

    1、模型、属性、表、字段间的关系:

    一个模型类在数据库中对应一张表;在模型类中定义的属性,对应该模型对照表中的字段。

    2、定义属性

        A、概述

             ·django根据属性的类型确定以下信息

              ·当前选择的数据库支持字段的类型

             ·渲染管理表单时使用的默认html控件

             ·在管理站点最低限度的验证

    B、

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

        C、属性命名限制

             ·遵循标识符规则

             ·由于django的查询方式,不允许使用连续的下划线

        3、库

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

             ·使用方式:

                   ·导入from django.db import models

                   ·通过models.Field创建字段类型的对象,赋值给属性

        4、逻辑删除

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

        5、字段类型

             ·AutoField

                   ·一个根据实际ID自动增长的IntegerField,通常不指定如果不指定,一个主键字段将自动添加到模型中

             ·CharField(max_length=字符长度)

                   ·字符串,默认的表单样式是 TextInput

             ·TextField

                   ·大文本字段,一般超过4000使用,默认的表单控件是Textarea

             ·IntegerField

                   ·整数

             ·DecimalField(max_digits=None, decimal_places=None)

                   ·使用python的Decimal实例表示的十进制浮点数

                   ·参数说明

                         ·DecimalField.max_digits

                              ·位数总数

                         ·DecimalField.decimal_places

                              ·小数点后的数字位数

             ·FloatField

                   ·用Python的float实例来表示的浮点数

             ·BooleanField

                   ·true/false 字段,此字段的默认表单控制是CheckboxInput

             ·NullBooleanField

                   ·支持null、true、false三种值

             ·DateField([auto_now=False, auto_now_add=False])

                   ·使用Python的datetime.date实例表示的日期

                   ·参数说明

                         ·DateField.auto_now

                              ·每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为false

                         ·DateField.auto_now_add

                              ·当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为false

                   ·说明

                         ·该字段默认对应的表单控件是一个TextInput. 在管理员站点添加了一个JavaScript写的日历控件,和一个“Today"的快捷按钮,包含了一个额外的invalid_date错误消息键

                   ·注意

                         ·auto_now_add, auto_now, and default 这些设置是相互排斥的,他们之间的任何组合将会发生错误的结果

             ·TimeField

                   ·使用Python的datetime.time实例表示的时间,参数同DateField

             ·DateTimeField

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

             ·FileField

                   ·一个上传文件的字段

             ·ImageField

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

        6、字段选项

             ·概述

                   ·通过字段选项,可以实现对字段的约束

                   ·在字段对象时通过关键字参数指定

             ·null

                   ·如果为True,Django 将空值以NULL 存储到数据库中,默认值是 False

             ·blanke

                   ·如果为True,则该字段允许为空白,默认值是 False

             ·注意

                   ·null是数据库范畴的概念,blank是表单验证证范畴的

             ·db_column

                   ·字段的名称,如果未指定,则使用属性的名称

             ·db_index

                   ·若值为 True, 则在表中会为此字段创建索引

             ·default

                   ·默认值

             ·primary_key

                   ·若为 True, 则该字段会成为模型的主键字段

             ·unique

                   ·如果为 True, 这个字段在表中必须有唯一值

        7、关系

             ·分类

                   ·ForeignKey:一对多,将字段定义在多的端中

                   ·ManyToManyField:多对多,将字段定义在两端中

                   ·OneToOneField:一对一,将字段定义在任意一端中

             ·用一访问多

                   ·格式

                         ·对象.模型类小写_set

                   ·示例

                         grade.students_set

             ·用一访问一

                   ·格式

                         ·对象.模型类小写

                   ·示例

                         ·grade.students

             ·访问id

                   ·格式

                         ·对象.属性_id

                   ·示例

                         ·student.sgrade_id

    7、元选项

             概念:

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

             db_table:

                   定义表名,推荐使用小写字母,默认为项目名(小写)_类名(小写)

             ordering:

                   对象的默认排序字段,获取对象的列表时使用。

                   ordering[‘id’]          :以id升序排列

                   ordering[‘-id’]           :以id降序排列

                   使用排序会增大数据库的开销

  • 相关阅读:
    Java实现 LeetCode 400 第N个数字
    Java实现 LeetCode 400 第N个数字
    Java实现 LeetCode 399 除法求值
    Java实现 LeetCode 399 除法求值
    Java实现 LeetCode 399 除法求值
    Java实现 LeetCode 398 随机数索引
    Java实现 LeetCode 398 随机数索引
    Java实现 LeetCode 398 随机数索引
    linux中的cd ..和cd -命令有什么区别?
    GCC使用
  • 原文地址:https://www.cnblogs.com/xshan/p/8323464.html
Copyright © 2011-2022 走看看