返回程序集的方法
一、获取所有对象all
获取一个表中所有对象的最简单的方式是全部获取。可以使用管理器的all() 方法:
>>> all_entries = Entry.objects.all()
二、使用过滤器获取特定对象filter
all() 方法返回了一个包含数据库表中所有记录查询集。但在通常情况下,你往往想要获取的是完整数据集的一个子集。
要创建这样一个子集,你需要在原始的的查询集上增加一些过滤条件。两个最普遍的途径是:
>>> Entry.objects.filter(pub_date__year=2006)
三、order_by
-
order_by(
*fields)
默认情况下,QuerySet 根据模型Meta 类的ordering 选项排序。你可以使用order_by 方法给每个QuerySet 指定特定的排序。
例如:
>>> Entry.objects.filter(pub_date__year=2005).order_by('-pub_date', 'headline')
四、values
-
values(
*fields)
返回一个ValuesQuerySet —— QuerySet 的一个子类,迭代时返回字典而不是模型实例对象。
每个字典表示一个对象,键对应于模型对象的属性名称。
>>> Blog.objects.values() [{'id': 1, 'name': 'Beatles Blog', 'tagline': 'All the latest Beatles news.'}], >>> Blog.objects.values('id', 'name') [{'id': 1, 'name': 'Beatles Blog'}]
不返回程序集的方法
一、通过get 获取一个单一的对象get
filter() 始终给你一个查询集,即使只有一个对象满足查询条件 —— 这种情况下,查询集将只包含一个元素。
如果你知道只有一个对象满足你的查询,你可以使用管理器的get() 方法,它直接返回该对象:
>>> one_entry = Entry.objects.get(pk=1)
二、count
-
count()
返回在数据库中对应的 QuerySet.对象的个数。 count() 永远不会引发异常。
例:
Entry.objects.count()
Entry.objects.filter(headline__contains='Lennon').count()
三、create
-
create(
**kwargs)
一个在一步操作中同时创建对象并且保存的便捷方法. 如此一来:
>>> p = Person.objects.create(first_name="Bruce", last_name="Springsteen")
和:
>>> p = Person(first_name="Bruce", last_name="Springsteen")
>>>p.save(force_insert=True)
是等同的.
四、update
-
update(
**kwargs)
对指定的字段执行SQL更新查询,并返回匹配的行数(如果某些行已具有新值,则可能不等于已更新的行数)。
例如,要对2010年发布的所有博客条目启用评论,您可以执行以下操作:
>>> Entry.objects.filter(pub_date__year=2010).update(comments_on=False)
五、delete
-
delete()
对QuerySet中的所有行执行SQL删除查询。立即应用delete()。您不能在QuerySet上调用delete(),该查询已采取切片或以其他方式无法过滤。
例如,要删除特定博客中的所有条目:
>>> b = Blog.objects.get(pk=1)
>>> Entry.objects.filter(blog=b).delete()
//一定要区别get filter value这几个看起来很像
例:
如果你接受到参数id,你想要输出数据库A的这个id的名字>>>先找到对象再找字段
>>>Entry.objects.get(id=id).sname
//像这样找某个对象的某个字段的(某个行的字段)可以用get
但是如果你要对某些程序集做处理,比如说输出全部的信息all然后for循环输出filter也是一样的,只是他对all再进行筛选而以,所以经常用在对程序集的修改和选择上