ORM 之常用查询、字段类型、约束

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="^金.*$"

  

原文地址:https://www.cnblogs.com/NGU-PX/p/14252949.html