前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >django2实战3.模型的增删改查使用交互shell添加数据修改数据查询数据删除数据

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

作者头像
章鱼喵
发布2018-09-26 18:02:57
1.5K0
发布2018-09-26 18:02:57
举报
文章被收录于专栏:codingcoding

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

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

使用交互shell

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

代码语言:javascript
复制
☁  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]:

添加数据

代码语言:javascript
复制
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,即相当于修改原记录

代码语言:javascript
复制
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 获取所有内容
代码语言:javascript
复制
In [10]: all_posts = Post.objects.all() # 检索所有的文章

In [11]: all_posts
Out[11]: <QuerySet [<Post: 静夜思>, <Post: 清平调其一>]>
  • filter 过滤内容
代码语言:javascript
复制
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 反向搜索
代码语言:javascript
复制
In [15]: Post.objects.filter(publish__year=2018).exclude(title__startswith='静') # 检索2018年发布,且除了标题是以‘静’字开头的文章
Out[15]: <QuerySet [<Post: 清平调其一>]>
  • order_by 排序

到后台再新增几条数据

将进酒

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

将进酒

望庐山瀑布

代码语言:javascript
复制
日照香炉生紫烟,遥看瀑布挂前川。
飞流直下三千尺,疑是银河落九天。

望庐山瀑布

代码语言:javascript
复制
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: 清平调其一>]>

删除数据

代码语言:javascript
复制
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实战文集

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.09.07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用交互shell
  • 添加数据
  • 修改数据
  • 查询数据
  • 删除数据
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档