有了数据库中的数据,如何对这些数据进行访问?我们先使用Django的Shell尝试一下对数据库的访问操作,体验Django ORM的强大之处。
打开终端界面,执行命令:python manage.py shell。此时,会进入命令提示符(>>>)状态。我们可以在命令提示符后方编写代码。
首先,导入模型类。
然后,查询一首名称为“春夜喜雨”的古诗。
“古诗.objects”是模型管理器对象,包含各种访问数据库的方法。
get方法用于查询唯一的数据对象,参数就是查询条件。
一般只有在查询结果唯一时使用get方法,如果有多个查询结果时使用get方法,会导致程序异常。当有多个查询结果时,需要使用filter方法。
当我们获取了一首古诗对象,就可以调用对象的属性。例如,调用“诗句”属性。
还可以调用“作者”属性,得到一个“作者”对象。
可以多层级进行调用。例如,继续调用“作者”对象的“姓名”属性。
在“名句”模型类中,我们为作者字段添加过“related_name”的参数为“相关名句”。在这里它能够派上用场了。我们可以通过“作者”对象关联查询这名作者的所有“名句”。
得到的是一个关联管理器对象。通过它能够得到某一作者的全部名句对象。例如,我们查询一下作者“杜甫”共有多少条“名句”。
还能够查询第一条“名句”的诗句。
当然,也能查询最后一条。
如果需要全部的“名句”,也可以获取到全部“名句”集合。
先尝试到这里。示例代码中,我们没有编写任何SQL语句,却能够灵活地对数据库进行访问,这就是Django ORM的强大之处,如图4-6所示。
图4-6 使用Django Shell访问数据库
对于数据库的访问不能仅仅停留在Django的Shell中,最终还是要把数据呈现到用户打开的网页中。