字段属性和选项
字段 属性
**使用时需要引入django.db.models包,字段类型如下:
类型 | 描述 |
---|---|
AutoField | 自动增长的IntegerField,通常不用指定,不指定时 Django会自动创建属性名为id的自动增长属性 |
BooleanField | 布尔字段,值为True或False |
NullBooleanField | 支持Null、True、False三种值。 |
CharField(max_length=最大长度) | 字符串。参数max_length表示最大字符个数。 |
TextField | 大文本字段,一般超过4000个字符时使用。 |
IntegerField | 整数 |
DecimalField(max_digits=None, decimal_places=None) | 十进制浮点数。参数max_digits表示总位。参数decimal_places表示小数位数。 |
FloatField | 浮点数 |
DateField:([auto_now=False, auto_now_add=False]) | 日期。 |
1)参数auto_now表示每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为false。 | |
2) 参数auto_now_add表示当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为false。 | |
3)参数auto_now_add和auto_now是相互排斥的,组合将会发生错误 | |
TimeField | 时间,参数同DateField。 |
DateTimeField | 日期时间,参数同DateField。 |
FileField | 上传文件字段。 |
ImageField | 继承于FileField,对上传的内容进行校验,确保是有效的图片。 |
注意:ImageField()字段需要借助pillow模块才能使用,因此需要先下载pillow模块。Python3.6后 使用PIL模块。
选项
通过选项实现对字段的约束,选项如下:
选项名 | 描述 |
---|---|
default | 默认值,设置默认值 |
primary_key | 若为True,则该字段会成为模型的主键字段,默认值是False,一般作为AutoField的选项使用。 |
unique | 如果为True, 这个字段在表中必须有唯一值,默认值是False。 |
db_index | 若值为True, 则在表中会为此字段创建索引,默认值是False。 |
db_column | 字段的名称,如果未指定,则使用属性的名称。 |
null | 如果为True,表示允许为空,默认值是False。 |
常用方法
**(1)、all(): 查询所有结果
(2)、filter(**kwargs): 它包含了与所给筛选条件相匹配的对象
(3)、get(kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个, 如果符合筛选条件的对象超过一个或者没有都会抛出错误。
(4)、exclude(**kwargs):它包含了与所给筛选条件不匹配的对象
(5)、values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet,
运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列
(6)、values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
(7)、order_by(*field): 对查询结果排序
(8)、reverse(): 对查询结果反向排序,请注意reverse()通常只能在具有已定义顺序的QuerySet上调用(在model类的Meta中指定ordering或调用order_by()方法)。
(9)、count(): 返回数据库中匹配查询(QuerySet)的对象数量。
(10)、first(): 返回第一条记录
(11)、last(): 返回最后一条记录
(12)、exists(): 如果QuerySet包含数据,就返回True,否则返回False
总结:
1.返回对象方法:
get()、first()、last()
2.返回QuerySet对象方法:
all()、filter()、exclude()、order_by()、reverse()、
values() 返回一个可迭代的字典序列。
values_list() 返回一个可迭代的元祖序列。
3.返回Boolean值方法:
exists()
4.返回数字的方法:
count()
双下划綫方法
1.xx__lt : 小于
例如:id__lt =2,获取 id小于2的所有记录。
扩展:xx__lte=2小于等于2
2.xx__gt : 大于
扩展
(1).xx_gte=30 大于等于30
(2).查找大于等于20 小于等于30的所有记录。
ret=person_model.filter(age__gt=20,age__lte=30)
3.xx__in: 包含某些值
例如获取年龄是11,32的记录
扩展:不包含
ret=person_model.exclude(age__in=[32])
- xx_contains(): 包含某个字符的记录
扩展: xx_icontains() 忽略大小写
5.xx__range():查找范围
查找年龄在20至30之间的所有记录
6.xx__startswith=‘s’: 获取以s开头的记录
7.xx__endsweith=‘s’:获取以s结尾的记录
8.date类型字段可以根据年月日进行过滤