zoukankan      html  css  js  c++  java
  • models属性

    概述
    django根据属性的类型确定以下信息
    ·当前选择的数据库支持字段的类型
    ·渲染管理表单时使用的默认html控件
    ·在管理站点最低限度的验证
    django会为表增加自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后,则django不会再生成默认的主键列
    属性命名限制
    ·遵循标识符规则
    ·由于django的查询方式,不允许使用连续的下划线
    定义属性时,需要字段类型,字段类型被定义在django.db.models.fields目录下,为了方便使用,被导入到django.db.models中
    使用方式
    ·导入from django.db import models
    ·通过models.Field创建字段类型的对象,赋值给属性
    逻辑删除
    对于重要数据都做逻辑删除,不做物理删除,实现方法是定义isDelete属性,类型为BooleanField,默认值为False
    常用字段类型:
    ·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
    

    常用字段选项(通过字段选项,可以实现对字段的约束):
    1、 null=True
       数据库中字段是否可以为空
    2、 blank=True
       django的 Admin 中添加数据时是否可允许空值
    #一般null=True & blank=True 咱们搭配着用,出现null=True就用上blank=True
    3、 primary_key = True
       主键,对AutoField设置主键后,就会代替原来的自增 id 列
    4、 auto_now 和 auto_now_add
       auto_now 自动创建---无论添加或修改,都是当前操作的时间
       auto_now_add 自动创建---永远是创建时的时间
    5、 choices (后台admin下拉菜单)
    USER_TYPE_LIST = (
    (1,u'超级用户'),
    (2,u'普通用户'),
    )
    user_type = models.IntegerField(choices=USER_TYPE_LIST,default=1,verbose_name=u'用户类型')
    6、 max_length 最大长度
    7、 default  默认值
    8、 verbose_name  Admin(后台显示的名称)中字段的显示名称
    9、 name|db_column  数据库中的字段名称
    10、unique=True  不允许重复
    11、db_index = True  数据库索引,例如:如果你想通过name查询的更快的话,给他设置为索引即可
    12、editable=True  在Admin里是否可编辑
    13、error_messages=None  错误提示
    14、help_text  在Admin中提示帮助信息
    15、validators=[] 自定义验证器
    16、upload_to 指定上传路径
    关系
    ·分类
    ·ForeignKey:一对多,将字段定义在多的端中
    ·ManyToManyField:多对多,将字段定义在两端中
    ·OneToOneField:一对一,将字段定义在任意一端中

    ·用一访问多 反向查
    	·格式
    		对象.模型类小写_set
    	·示例
    		grade.students_set
    
    
    ·用一访问一
    	·格式
    		·对象.模型类小写
    	·示例
    		·grade.students
    
    
    ·访问id
    	·格式
    		·对象.属性_id
    	·示例
    		·student.sgrade_id
    

  • 相关阅读:
    mybatis映射器${}和#{}的区别
    在list里循环放入map,每次map里的值都不一样,可是放入后再取出来就变成一样的
    tomcat 配置 编码方式后,重新启动 配置还原
    三级联动探索
    Excel导入导出的实现
    Servlet实现文件上传下载
    Java数据类型转换汇总
    mysql8.0.13安装
    cmd中命令能用,vs中不能用解决方案
    yii2获取模块、控制器、方法名
  • 原文地址:https://www.cnblogs.com/einsam/p/11400084.html
Copyright © 2011-2022 走看看