Django的model操作中一些常用的小点

Posted bainianminguo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django的model操作中一些常用的小点相关的知识,希望对你有一定的参考价值。

一、django的orm的13种基本的查询方法

1、all方法,查询某张表中的所有的数据

user_obj_list = models.Person.objects.all()

  

返回的结果是queryset对象,也就是一个对象的集合

<QuerySet [<Person: 人的对象小黑9>, <Person: 人的对象小黑8>, <Person: 人的对象小黑7>, <Person: 人的对象小黑6>, <Person: 人的对象小黑5>, <Person: 人的对象小黑4>, <Person: 人的对象小黑3>, <Person: 人的对象小黑2>, <
Person: 人的对象小黑19>, <Person: 人的对象小黑18>, <Person: 人的对象小黑17>, <Person: 人的对象小黑16>, <Person: 人的对象小黑15>, <Person: 人的对象小黑14>, <Person: 人的对象小黑13>, <Person: 人的对象小黑12>, <Pers
on: 人的对象小黑11>, <Person: 人的对象小黑10>, <Person: 人的对象小黑1>, <Person: 人的对象小黑0>]>

  

2、filter方法,查询符合某个条件的所有的数据

user_objs = models.Person.objects.filter(name="小黑7")

 

返回的结果也是一个queryset对象,也就是一个对象的集合

<QuerySet [<Person: 人的对象小黑7>]>

  

3、get方法,返回的单个对象

user_obj = models.Person.objects.get(name="小黑7")

  

返回的是单个对象

人的对象小黑7

  

# 返回的时候某一个具体的对象,如果这个条件的对象不存在,会报错

 

4、exclude方法,对条件取反

user_obj = models.Person.objects.exclude(id__gte=4)

  

返回的是一个queryset对象的

exclude方法 <QuerySet [<Person: 人的对象小黑2>, <Person: 人的对象小黑1>, <Person: 人的对象小黑0>]>

  

 

5、values方法,查询一个queryset对象的值

user_obj = models.Person.objects.exclude(id__gte=4).values("id","name","birthday_1")

  

返回的是一个一个queryset的对象集合,是一个大的列表,每个列表的元素又是每个对象的小字典

<QuerySet [{‘id‘: 3, ‘name‘: ‘小黑2‘, ‘birthday_1‘: datetime.datetime(2016, 12, 6, 0, 0)}, {‘id‘: 2, ‘name‘: ‘小黑1‘, ‘birthday_1‘: datetime.datetime(2016, 5, 13, 0, 0)}, {‘id‘: 1, ‘name‘: ‘小黑0‘, ‘birthday_1‘:
datetime.datetime(2016, 3, 5, 0, 0)}]>

  

6、values_list,查询一个queryset对象的值

user_obj = models.Person.objects.exclude(id__gte=4).values_list("id", "name", "birthday_1")

  

返回的是一个queryset对象,这个对象是一个列表,列表中的每个元素是每个对象的元组信息

 

<QuerySet [(3, ‘小黑2‘, datetime.datetime(2016, 12, 6, 0, 0)), (2, ‘小黑1‘, datetime.datetime(2016, 5, 13, 0, 0)), (1, ‘小黑0‘, datetime.datetime(2016, 3, 5, 0, 0))]>

  

7、order_by,根据某个字段排序,如果字段加一个负号,则是逆序排序,如果不加,则则是正序排列

user_obj = models.Person.objects.exclude(id__gte=4).order_by("-id")

  

返回的结果也是一个queryset对象

<QuerySet [<Person: 人的对象小黑2>, <Person: 人的对象小黑1>, <Person: 人的对象小黑0>]>

  

user_obj = models.Person.objects.exclude(id__gte=4).order_by("id")

  

返回的结果也是一个queryset对象

<QuerySet [<Person: 人的对象小黑0>, <Person: 人的对象小黑1>, <Person: 人的对象小黑2>]>

  

 

8、reverse方法,对一个有序的queryset对象,做反转操作

user_obj = models.Person.objects.exclude(id__gte=4).order_by("-id").reverse()

  

返回的结果

<QuerySet [<Person: 人的对象小黑0>, <Person: 人的对象小黑1>, <Person: 人的对象小黑2>]>

  

9、distance方法,对返回的数据去重,在外键中用的比较多

 

10、count方法,统计查询到的数据的个数

 

11、first方法,在queryset对象中返回查询到的第一条数据

 

12、last方法,在queryset对象中返回查询到的最后一条数据

 

13、exists方法,判断用指定的过滤条件查询是否有值

 

以上是关于Django的model操作中一些常用的小点的主要内容,如果未能解决你的问题,请参考以下文章

django一些之前没有用过的小点

Django中的forms一些小点

django查询操作

Django ORM操作数据库常用API

Django model 操作

python3开发进阶-Django框架中的ORM的常用操作的补充(F查询和Q查询,事务)