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||| 错误提示,自定义验证规则)
一对多
多对多
一对一

浙公网安备 33010602011771号