美文网首页程序员
django2实战3.模型的增删改查

django2实战3.模型的增删改查

作者: 闲睡猫 | 来源:发表于2018-09-07 08:42 被阅读291次

    继上篇 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实战文集

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

    相关文章

      网友评论

        本文标题:django2实战3.模型的增删改查

        本文链接:https://www.haomeiwen.com/subject/kjyqgftx.html