码迷,mamicode.com
首页 > 其他好文 > 详细

Django文档阅读之查询

时间:2018-12-13 12:44:44      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:doc   http   django   mod   关键字   更改   关系   参数   sele   

创建对象

为了在Python对象中表示数据库表数据,Django使用直观的系统:模型类表示数据库表,该类的实例表示数据库表中的特定记录。

要创建对象,请使用模型类的关键字参数对其进行实例化,然后调用save()以将其保存到数据库中。

>>> from blog.models import Blog
>>> b = Blog(name=‘Beatles Blog‘, tagline=‘All the latest Beatles news.‘)
>>> b.save()
要在单个步骤中创建和保存对象,请使用该 create()方法。
要保存对已存在于数据库中的对象的更改,请使用 save()
更新ManyToManyField工作的方式略有不同 - 使用 add()字段上的方法向关系添加记录,而不是用save()。

检索对象

要从数据库中检索对象,请在模型类上构建一个 QuerySetvia a Manager

QuerySet表示数据库中的对象集合。它可以有零个,一个或多个过滤器过滤器根据给定的参数缩小查询结果范围。在SQL术语中,a QuerySet等于SELECT语句,过滤器是限制子句,如WHERELIMIT

从表中检索对象的最简单方法是获取所有这些对象。为此,请使用以下all()方法

要创建此类子集,请优化初始 QuerySet添加过滤条件。两种最常见的改进方法QuerySet是:

filter(**kwargs)
返回QuerySet包含与给定查找参数匹配对象。
exclude(**kwargs)
返回QuerySet包含与给定查找参数匹配对象

查找参数(**kwargs在上面的函数定义中)应采用下面的字段查找描述的格式

例如,要获取QuerySet2006年的博客条目,请使用filter()如下:

Entry.objects.filter(pub_date__year=2006)

检索单个对象get()

filter()QuerySet即使只有一个对象与查询匹配,它总会给你一个 - 在这种情况下,它将QuerySet包含一个元素。

如果您知道只有一个对象与您的查询匹配,则可以使用直接返回对象的 get()方法 Manager

>>> one_entry = Entry.objects.get(pk=1)
请注意,使用get()和使用 filter()切片之间存在差异 [0]如果没有与查询匹配的结果, get()则会引发DoesNotExist 异常。

使用Python的数组切片语法的子集将您限制 QuerySet为一定数量的结果。这相当于SQL LIMITOFFSET子句。


例如,这将返回前5个对象():LIMIT 5

>>> Entry.objects.order_by(‘headline‘)[0]

这大致相当于:

>>> Entry.objects.order_by(‘headline‘)[0:1].get()

>>> Entry.objects.all()[:5]
 

Django文档阅读之查询

标签:doc   http   django   mod   关键字   更改   关系   参数   sele   

原文地址:https://www.cnblogs.com/roygood/p/10113289.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!