在那个网站做ppt可以赚钱,网页代码怎么看,杭州网站建设服务,系统开发的方法前言
先抛出一个问题。银行就相当于一个数据库#xff0c;你去银行取钱存钱办卡销卡#xff0c;是你告诉银行柜员方便还是你自己去操作电脑办卡取卡方便#xff1f;#xff08;你还不一定会#xff0c;假设自动存款机还没发明#xff09;#xff0c;object在数据库中就…前言
先抛出一个问题。银行就相当于一个数据库你去银行取钱存钱办卡销卡是你告诉银行柜员方便还是你自己去操作电脑办卡取卡方便你还不一定会假设自动存款机还没发明object在数据库中就相当于银行里得银行柜员。
步入正题
在django中的view.py中我们可能回经常见到 book_set Book.objects.all()book_list Book.objects.get()?
让我们疑惑的问题是objects是个什么东西book_set 和book_list 又是个神马东西
object是Manager类型的对象定义在from django.db import models中是默认生成的也就是objects Modes.Manage() 。用途是数据库和模型对象交互的接口(api)。book_set返回的是个集合book_list返回的是个列表。book Book.objects.all(),这个翻译成银行得话就是一个叫BOOK得人来到银行通过一个名叫objects得柜员查询BOOK得银行余额和银行卡信息结果得到一个queryset对象
在book BOOK.objects.get()或者book BOOK.objects.all()中
BOOK是类名就是你在model中创建的类objects是django默认的管理器对象就是刚才的比喻中的银行柜员帮你完成各种操作。get()或者all是API一种内置函数也就是比喻钟银行柜员可以帮助我们完成的各种具体业务不同的业务调用不同的API就可以了。book通过all得到的就是要给queryset对象也就是查询对象集合。
一QuerySet 对象的创建方法 from blog.models import Blogb Blog(nameBeatles Blog, taglineAll the latest Beatles news.)b.save()总之一共有四种方法
# 方法 1
Author.objects.create(nameWeizhongTu, emailtuweizhong163.com)# 方法 2
twz Author(nameWeizhongTu, emailtuweizhong163.com)
twz.save()# 方法 3
twz Author()
twz.nameWeizhongTu
twz.emailtuweizhong163.com
twz.save()# 方法 4首先尝试获取不存在就创建可以防止重复
Author.objects.get_or_create(nameWeizhongTu, emailtuweizhong163.com)
# 返回值(object, True/False)
备注前三种方法返回的都是对应的 object最后一种方法返回的是一个元组(object, True/False)创建时返回 True, 已经存在时返回 False
对比得知object这个管理器对象帮了我们很多忙我们不用实例化对象不用save()而是交给Author.object去实现。
举个例子吧如果我们把数据库比作银行那么object对象就相当于柜员能帮助你处理各种业务。如果没有得话去银行取钱我们得自己登记自己去金库拿钱记账锁门.........不太现实吧。同理你去数据库取个数据没有objects对象是不是很麻烦
其实换个角度来讲你去银行办理得一些业务是银行柜员帮你在银行得数据库里进行得增删改查操作银行柜员得名字可以叫object默认得名字当然也可以叫小李小王不过你得自定义罢了。xiaoli models.Manage()也是可以得。
你看看此时此刻有没有认识到一切皆对象这个面向对象编程得伟大之处。
二Django中查询常用的API
# 查询相关API# 1filter(**kwargs): 它包含了与所给筛选条件相匹配的对象# 2all(): 查询所有结果# 3get(**kwargs): 返回与所给筛选条件相匹配的对象返回结果有且只有一个如果符合筛选条件的对象超过一个或者没有都会抛出错误。#-----------下面的方法都是对查询的结果再进行处理:比如 objects.filter.values()--------# 4values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet运行后得到的并不是一系列 model的实例化对象而是一个可迭代的字典序列# 5exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象# 6order_by(*field): 对查询结果排序# 7reverse(): 对查询结果反向排序# 8distinct(): 从返回结果中剔除重复纪录# 9values_list(*field): 它与values()非常相似它返回的是一个元组序列values返回的是一个字典序列# 10count(): 返回数据库中匹配查询(QuerySet)的对象数量。# 11first(): 返回第一条记录# 12last(): 返回最后一条记录# 13exists(): 如果QuerySet包含数据就返回True否则返回False。
另外关于ApI给大家推荐一篇不错得文章
https://blog.csdn.net/cumtdeyurenjie/article/details/80211896