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

  一对多

  多对多

  一对一  

 

posted @ 2020-01-30 15:37  呆呆蒙蒙  阅读(151)  评论(0编辑  收藏  举报