django-model-集合,分片,单个
1、get():返回一个满足条件的对象,返回的是QuerySet对象
如果没有找到符合条件的对象,会引发模型类.DoesNotExist异常
如果找到多个,会引发,会引发模型类.MultiObjectsReturned异常
-- 正常操作
class User(models.Model): u_name = models.CharField(max_length=16,unique=True) u_password = models.CharField(max_length=256) u_age = models.CharField(max_length=2,default='null') class Meta: db_table='user'
def get_user(requst): names = User.objects.get(u_age=1) print(names.u_name) return HttpResponse("获取成功")
-- 没有找到数据
def get_user(requst): names = User.objects.get(u_age=2) print(names.u_name) return HttpResponse("获取成功")
-- 找到多条数据
def get_user(requst): names = User.objects.get(u_age=20) print(names.u_name) return HttpResponse("获取成功")
first()和last() 最开始的一条有可能等于最后一条数据
2、first() 获取第一条数据,返回的是QuerySet对象
def get_user(requst): # names = User.objects.get(u_age=20) # print(names.u_name) users = User.objects.all().first() print(users.u_name,users.u_age) return HttpResponse("获取成功")
3、last() 获取最后一条数据,返回的是QuerySet对象
def get_user(requst): # names = User.objects.get(u_age=20) # print(names.u_name) # users = User.objects.all().first() # print(users.u_name,users.u_age) users = User.objects.all().last() print(users.u_name,users.u_age) return HttpResponse("获取成功")
4、count() 一共有多少条数据
def get_user(requst): # names = User.objects.get(u_age=20) # print(names.u_name) # users = User.objects.all().first() # print(users.u_name,users.u_age) # users = User.objects.all().last() # print(users.u_name,users.u_age) users = User.objects.all().count() print(users) return HttpResponse("获取成功")
5、all() 返回的是QuerySet对象,程序并没有真的在数据库中执行SQL语句查询数据,但支持迭代,使用for循环可以获取数据。
def get_user(requst): #all方法 users = User.objects.all() for user in users: print(user.u_name) return HttpResponse("获取成功")
6、filter() 返回的是QuerySet对象,与all()相似,只是all()是查询所有数据,常用:filter表示‘ = ’,exclude表示’ != ’。
def get_user(requst): #filter的使用 users = User.objects.filter(u_age=20) for user in users: print(user.u_name) return HttpResponse("获取成功")
7、exclude() 返回的是QuerySet对象,与all()相似,只是all()是查询所有数据,常用:filter表示‘ = ’,exclude表示’ != ’。
def get_user(requst): #exclude的使用 users = User.objects.exclude(u_age=20) for user in users: print(user.u_name) return HttpResponse("获取成功")
8、切片 [0:3]获取第1个到3个,相当于sql语句中limit和offset
def get_user(requst): #切片使用 users = User.objects.all()[0:3] for user in users: print(user.u_name) return HttpResponse("获取成功")
缓存集
- filter,exclude,all
- 都不会真正的去查询数据库
- 只有我们在迭代结果集,或者获取单个对象属性的时候,它才会去查询数据库
- 懒查询,为了优化数据库结构
查询条件
- 属性__运算符=值
- 运算符 gt(大于) ,lt(小于), gte(大于等于), lte(小于等于) = , in (在某个集合当中), contains (包含) , startwith ,endswith, exact
- in,contains,startwith,endswith 类似于模糊查询 like
- 前面同时添加不i,ignore 忽略
1、创建类,继承Model
2、外键
3、多对多
4、Tb.objects.create(**{})
5、Tb.objects.filter().update()
6、delete
7、Tb.objects.filter().first()
8、 -- .all [obj,obj,]
-- .values[{},{}]
-- .values_list[(),()]
9、get
10、反向 _set
11、F和Q
12、releated_name
13、add
14、exsit
15、__跨表
16、get_or_create
17、set
18、remove
19、clean
20、 obj = User(xx)
obj.save()
21、null = True 针对数据库
22、外键:__id
23、引号
24、命令
25、自动创建第三张表
26 、聚合查询
27、blank=True 针对django admin
28、filter(id__in=[])
29、distinct
30、 count
31、__str__
32、数据库字段大小写不敏感
33、QuerySet切片取值
34、filter(id_range=[])
35、reverse
36、id__gt
37、id__contains
38、连接MY
39、.last()
40、python manage.py shell
41、order_by()
42、id__lt
43、exclude()
44、name_startswith
45、filter(-id)
46、惰性机制
47、aggregate
48、flush
49、Q(1|)
50、verbose_name
51、关联查询
主表,驱动表
52、关联删除
53、__regex
一、创建类
class UserInfo(model.Model)
age = CharField(是否为空,类型,长度,列名,索引=True||| 错误提示,自定义验证规则)
一对多
多对多
一对一