Django--orm--字段属性&&选项&&常用方法&&双下划綫方法

字段属性和选项

字段 属性

**使用时需要引入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])
  1. xx_contains(): 包含某个字符的记录
    在这里插入图片描述
    扩展: xx_icontains() 忽略大小写
    在这里插入图片描述
    5.xx__range():查找范围
    查找年龄在20至30之间的所有记录
    在这里插入图片描述
    6.xx__startswith=‘s’: 获取以s开头的记录
    在这里插入图片描述
    7.xx__endsweith=‘s’:获取以s结尾的记录
    在这里插入图片描述
    8.date类型字段可以根据年月日进行过滤
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值