1. orm常用字段类型
# ### orm中的常用字段类型 ''' <1> CharField 字符串字段, 用于较短的字符串. CharField 要求必须有一个参数 maxlength, 用于从数据库层和Django校验层限制该字段所允许的最大字符数. <2> IntegerField #用于保存一个整数. <3> FloatField 一个浮点数. 必须 提供两个参数: 参数 描述 max_digits 总位数(不包括小数点和符号) decimal_places 小数位数 举例来说, 要保存最大值为 999 (小数点后保存2位),你要这样定义字段: models.FloatField(..., max_digits=5, decimal_places=2) 要保存最大值一百万(小数点后保存10位)的话,你要这样定义: models.FloatField(..., max_digits=19, decimal_places=10) admin 用一个文本框(<input type="text">)表示该字段保存的数据. <4> AutoField 一个 IntegerField, 添加记录时它会自动增长. 你通常不需要直接使用这个字段; 自定义一个主键:my_id=models.AutoField(primary_key=True) 如果你不指定主键的话,系统会自动添加一个主键字段到你的 model. <5> BooleanField A true/false field. admin 用 checkbox 来表示此类字段. <6> TextField 一个容量很大的文本字段. admin 用一个 <textarea> (文本区域)表示该字段数据.(一个多行编辑框). <7> EmailField 一个带有检查Email合法性的 CharField,不接受 maxlength 参数. <8> DateField 一个日期字段. 共有下列额外的可选参数: Argument 描述 auto_now 当对象被保存时,自动将该字段的值设置为当前时间. 通常用于表示 "last-modified" 时间戳. auto_now_add 当对象首次被创建时,自动将该字段的值设置为当前时间.通常用于表示对象创建时间. (仅仅在admin中有意义...) <9> DateTimeField 一个日期时间字段. 类似 DateField 支持同样的附加选项. '''
2. 常用字段约束
# ### orm中的常用字段约束 ''' (1)null 如果为True,Django 将用NULL 来在数据库中存储空值。 默认值是 False. (1)blank 如果为True,该字段允许不填。默认为False。 要注意,这与 null 不同。null纯粹是数据库范畴的,而 blank 是数据验证范畴的。 如果一个字段的blank=True,表单的验证将允许该字段是空值。如果字段的blank=False,该字段就是必填的。 (2)default 字段的默认值。可以是一个值或者可调用对象。如果可调用 ,每有新对象被创建它都会被调用。 (3)primary_key 如果为True,那么这个字段就是模型的主键。如果你没有指定任何一个字段的primary_key=True, Django 就会自动添加一个IntegerField字段做为主键,所以除非你想覆盖默认的主键行为, 否则没必要设置任何一个字段的primary_key=True。 (4)unique 如果该值设置为 True, 这个数据字段的值在整张表中必须是唯一的 (5)choices 由二元组组成的一个可迭代对象(例如,列表或元组),用来给字段提供选择项。 如果设置了choices ,默认的表单将是一个选择框而不是标准的文本框,而且这个选择框的选项就是choices 中的选项。 '''
3. 13个常用查询api接口
# 1.all 查询所有数据 # 2.count 获取数据总数 # 3.first: 返回的第一条数据对象 # 4.last: 返回的最后一个数据对象 # 5.order_by 排序(正序) # 6.order_by 排序(倒序) reverse # 7.filter 按条件查询[相当于where] 返回的queryset对象 # 8.exists(): 如果QuerySet包含数据,就返回True,否则返回False # 9.get 返回一个模型类对象 [等价于数据对象] # 10.exclude: 排除符合条件的对象,返回的依然是queryset对象 [表达不等于除了的概念] # 11.values 查找某个字段值,返回字典 # 12.values_list 查找某个字段值,返回元组 # 13.distinct 去重 # 链式操作(连贯操作)
4. 其他常用查询
# 范围查询 # in => __in # > => __gt # >= => __gte # < => __lt # <= => __lte # between .. and .. => __range=[100,200] # like => __contains="金" # like模糊查询 # __contains="金" # like(忽略大小写) # __icontains="a" # __startswith="aa" 以..开头 # __endswith="bb" 以..结尾 # 针对于date类型 # __year 过滤日期字段的年份 # __month 过滤日期字段的月份 # __day 过滤日期字段的日 # 正则 __regex="^金.*$"