django2实战3.模型的增删改查使用交互shell添加数据修改数据查询数据删除数据

继上篇 django2实战2.创建博客应用

django对数据的操作采用的是ORM模式,即将数据库的增删改查抽象成对象方法的调用,开发人员只需要调用相关的方法,而不需要写sql语句。

使用交互shell

进入交互shell环境(推荐安装ipython)

☁  mysite  python manage.py shell
Python 3.6.6 (default, Sep  5 2018, 08:57:22)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.5.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

添加数据

In [1]: from django.contrib.auth.models import User

In [2]: from blog.models import Post

In [3]: user = User.objects.get(username='admin')

In [4]: post = Post(title='静夜思',
   ...:             slug='jing-ye-si',
   ...:             body='举头望明月,低头思故乡',
   ...:             author=user)
   ...:

In [5]: post.save()

进入后台查看post数据 http://127.0.0.1:8000/admin/blog/post/

新文章

修改数据

若post已经指定了一个数据,再调用save,即相当于修改原记录

In [7]: post
Out[7]: <Post: 静夜思>

In [8]: post.body = '床前明月光,疑是地上霜'

In [9]: post.save()

后台查看post内容 http://127.0.0.1:8000/admin/blog/post/2/change/

修改内容

查询数据

  • all 获取所有内容
In [10]: all_posts = Post.objects.all() # 检索所有的文章

In [11]: all_posts
Out[11]: <QuerySet [<Post: 静夜思>, <Post: 清平调其一>]>
  • filter 过滤内容
In [13]: Post.objects.filter(publish__year=2018)
Out[13]: <QuerySet [<Post: 静夜思>, <Post: 清平调其一>]>

In [14]: Post.objects.filter(publish__year=2018, title='静夜思')
Out[14]: <QuerySet [<Post: 静夜思>]>
  • exclude 反向搜索
In [15]: Post.objects.filter(publish__year=2018).exclude(title__startswith='静') # 检索2018年发布,且除了标题是以‘静’字开头的文章
Out[15]: <QuerySet [<Post: 清平调其一>]>
  • order_by 排序

到后台再新增几条数据

将进酒

  君不见,黄河之水天上来,奔流到海不复回。
  君不见,高堂明镜悲白发,朝如青丝暮成雪!
  人生得意须尽欢,莫使金樽空对月。
  天生我材必有用,千金散尽还复来。
  烹羊宰牛且为乐,会须一饮三百杯。
  岑夫子,丹丘生,将进酒,杯莫停。
  与君歌一曲,请君为我倾耳听。
  钟鼓馔玉不足贵,但愿长醉不复醒。
  古来圣贤皆寂寞,惟有饮者留其名。
  陈王昔时宴平乐,斗酒十千恣欢谑。
  主人何为言少钱,径须沽取对君酌。
  五花马、千金裘,呼儿将出换美酒,与尔同销万古愁!

将进酒

望庐山瀑布

日照香炉生紫烟,遥看瀑布挂前川。
飞流直下三千尺,疑是银河落九天。

望庐山瀑布

In [17]: Post.objects.all()
Out[17]: <QuerySet [<Post: 望庐山瀑布>, <Post: 将进酒>, <Post: 静夜思>, <Post: 清平调其一>]>
In [22]: Post.objects.order_by('publish') # 按 publish 正序
Out[22]: <QuerySet [<Post: 清平调其一>, <Post: 静夜思>, <Post: 将进酒>, <Post: 望庐山瀑布>]>

In [23]: Post.objects.order_by('-publish') # 按 publish 倒序
Out[23]: <QuerySet [<Post: 望庐山瀑布>, <Post: 将进酒>, <Post: 静夜思>, <Post: 清平调其一>]>

删除数据

In [29]: post = Post.objects.get(title='静夜思')

In [30]: post
Out[30]: <Post: 静夜思>

In [31]: post.delete()
Out[31]: (1, {'blog.Post': 1})

In [32]: post
Out[32]: <Post: 静夜思>

In [33]: Post.objects.all()
Out[33]: <QuerySet [<Post: 望庐山瀑布>, <Post: 将进酒>, <Post: 清平调其一>]>

下一节将讲解如何创建文章的列表页和详情页。如果你感兴趣,请关注我的django2实战文集

如果觉得本文对你有所帮助,点个赞,或者赏杯咖啡钱,你的认可对我很重要

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Flutter&Dart

Flutter之MaterialApp使用详解

1.6K30
来自专栏谭伟华的专栏

Vue 组件开发实践之 scopedSlot 的传递

在使用Vue开发我们的vhtml-ui的组件库的过程中遇到了组件嵌套组件时需要传递scopedSlot的情况,官方的文档和教程目前还没有比较明确的指引,所以摸着...

4K20
来自专栏佳爷的后花媛

前端面试题整理

两栏布局是主内容区为主,左(右)侧有一栏,(将侧边区块<aside>域浮动,<aside>浮动后覆盖绿色<main>, 再将<main> overflow:au...

50220
来自专栏互联网杂技

干货:前端开发指南Front-End-Develop-Guide

这份文件包含一系列用于面试审查求职者(候选人)的前端面试问题。这并不推荐把每个问题都问在同一个求职者(因为这会花几个小时的时间)。从列表中抽取一些问题能够帮助你...

36160
来自专栏移动开发之家

Flutter完整开发实战详解(一、Dart语言和Flutter基础)

 在如今的 Fultter 大潮下,本系列是让你看完会安心的文章。本系列将完整讲述:如何快速从0开发一个完整的 Flutter APP,配套高完成度 Flut...

1.3K30
来自专栏Python爬虫与数据挖掘

Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)总结

前几天小编连续写了四篇关于Python选择器的文章,分别用正则表达式、BeautifulSoup、Xpath、CSS选择器分别抓取京东网的商品信...

17910
来自专栏Golang语言社区

从web图片裁剪出发:了解H5中的Blob

刚开始做前端的时候,有个功能卡住我了,就是裁剪并上传头像。当时两个方案摆在我面前,一个是flash,我不会。另一个是通过iframe上传图片,然后再上传坐标由后...

54470
来自专栏软件开发

前端MVC Vue2学习总结(一)——MVC与vue2概要、模板、数据绑定与综合示例

 一、前端MVC概要 1.1、库与框架的区别 ? 框架是一个软件的半成品,在全局范围内给了大的约束。库是工具,在单点上给我们提供功能。框架是依赖库的。Vue是框...

649100
来自专栏yukong的小专栏

【SpringBoot2.0系列11】SpringBoot之@Elasticsearch完成CURD

【SpringBoot系列02】SpringBoot之使用Thymeleaf视图模板

87230
来自专栏salesforce零基础学习

salesforce 零基础学习(四十四)实现checkbox列表简单过滤功能

现在做的项目代码是原来其他公司做的,要在原来基础上业务进行适当调整加上一些CR,其中有一个需要调整的需求如下: 原来使用apex:selectCheckboxe...

248100

扫码关注云+社区

领取腾讯云代金券