Django之M层的字段属性和选项以及查询函数

一.常用的字段属性:

1.AutoField
自动增长的IntegerField,通常不用指定,不指定时Django会自动创建属性名为id的自动增长属性。
2.BooleanField
布尔字段,值为True或False。
3.NullBooleanField
支持Null、True、False三种值。
4.CharField(max_length=最大长度)
字符串。参数max_length表示最大字符个数。
5.TextField
大文本字段,一般超过4000个字符时使用。
6.IntegerField
整数
7.DecimalField(max_digits=None, decimal_places=None)
十进制浮点数。参数max_digits表示总位。参数decimal_places表示小数位数。
精度比FloatField高
8.FloatField
浮点数。参数同上
9.DateField:([auto_now=False, auto_now_add=False])
日期型
1)参数auto_now表示每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为false。
2) 参数auto_now_add表示当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为false。
3)参数auto_now_add和auto_now是相互排斥的,组合将会发生错误。

二、选项:

1.default
默认值。设置默认值。
2.primary_key
若为True,则该字段会成为模型的主键字段,默认值是False,一般作为AutoField的选项使用。
3.unique
如果为True, 这个字段在表中必须有唯一值,默认值是False。
4.db_index
若值为True, 则在表中会为此字段创建索引,默认值是False。
5.db_column
字段的名称,如果未指定,则使用属性的名称。
6.null
如果为True,表示允许为空,默认值是False。
7.blank
如果为True,则该字段允许为空白,默认值是False。
注意:null是数据库范畴的概念,blank是后台管理页面表单验证范畴的。
三、查询函数:
在这里插入图片描述
1.get实例:
例:查询图书id为3的图书信息

b=BookInfo.objects.get(id=3)

2.all方法示例:
例:查询图书所有信息

b=BookInfo.object.all()

3.filter方法示例:
条件格式:
模型类属性名__条件名=值

a)判等 条件名:exact 。
例:查询编号为1的图书。

b=BookInfo.objects.get(id__exact=1)

b)模糊查询
例1:查询书名包含’传’的图书。Contains

b=BookInfo.objects.filter(btitle__contains='传')

例2:查询书名以’部’结尾的图书 endswith 开头:startswith

b=BookInfo.objects.filter(btitle__endswith='部')

c)空查询 isnull
例:查询书名不为空的图书。isnull

b=BookInfo.objects.filter(btitle__isnull=False)

d)范围查询 in
例:查询id为1或3或5的图书。

b=BookInfo.objects.filter(id__in=[1,3,5])

e)比较查询 gt(greate than) lt(less than) gte(equal) 大于等于lte 小于等于
例:查询id大于3的图书。gt

b=BookInfo.objects.filter(id__gt=3)

f)日期查询 year
例1:查询1980年发表的图书。

BookInfo.objects.filter(bpub_date__year=1980)

例2:查询1980年1月1日后发表的图书。

From datetime import date
b=BookInfo.objects.filter(bpub_date__gt=date(1980,1,1))

exclude方法示例:
例:查询id不为3的图书信息。

b=BookInfo.objects.exclude(id=3)

order_by方法示例:
作用:进行查询结果进行排序。
例1:查询所有图书的信息,按照id从小到大进行排序。

b=BookInfo.objects.all().order_by(‘id’)

例2:查询所有图书的信息,按照id从大到小进行排序。

b=BookInfo.objects.all().order_by(‘-id’)

例3:把id大于3的图书信息按阅读量从大到小排序显示。

b=BookInfo.objects.filter(id__gt=3).order_by(‘-bread’)

查询集的特性:

1) 惰性查询:只有在实际使用查询集中的数据的时候才会发生对数据库的真正查询。
books=BookInfo.objects.all()
books
2) 缓存:当使用的是同一个查询集时,第一次使用的时候会发生实际数据库的查询,然后把结果缓存起来,之后再使用这个查询集时,使用的是缓存中的结果。
books1=BookInfo.objects.filter(id__gt=3)
[x for x in books1]

限制查询:

可以对一个查询集进行取下标或者切片操作来限制查询集的结果。
对一个查询集进行切片操作会产生一个新的查询集下标不允许为负数。
取出查询集第一条数据的两种方式:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值