Python学习笔记:7.1.4 Django快速建站 - ORM语法

前言:本文是学习网易微专业的《python全栈工程师 - Django快速建站》课程的笔记,欢迎学习交流。同时感谢老师们的精彩传授!

一、课程目标
  • 了解ORM语法的基本应用
二、详情解读
2.1.ORM语法
2.1.1.对应关系
  • 一个模型类 对应 一张数据库表
  • 一个模型类实例 对应 数据库表中的一行记录

上节课已经有数据模型类:

class BlogArticles(models.Model):
    title = models.CharField(max_length=300)
    author = models.ForeignKey(User, on_delete=models.CASCADE,related_name='blog_posts')
    body = models.TextField()
    publish = models.DateTimeField(default=timezone.now)

    class Meta:
    	# 这里负号表示倒序,此处别忘了末尾的逗号
        ordering = ('-publish', )

    def __str__(self):
        return self.title
2.1.2.基本操作

操作一、创建对象:
向数据库中增加一条记录,即新增一篇博客文章,亦即创建一个数据库实例。这种操作等效于SQL中的·:insert

在项目目录下,执行下面命令:

python manage.py shell

就会有下面的交互显示结果:
在这里插入图片描述
在交互模式里作如下操作,作用是往数据库中插入一条数据。

>>> from django.contrib.auth.models import User
>>> from blog.models import BlogArticles
>>> admin = User.objects.get(username='admin')
>>> blog = BlogArticles(title='hello world', author=admin,body='hello, I am a programmer.')
>>> blog.save()
>>>

操作二、查询/检索对象:
要从数据库检索对象,要通过模型类的Manager构建一个QuerySet

Manager(类)是一种接口,它赋予了Django模型操作数据库的能力。Django应用中的每个模型拥有至少一个Manager,默认名称是objects

一个Queryset代表来自数据库中对象的一个集合。它可以有 0 个,1 个或者多个filters.Filters,可以根据给定参数缩小查询结果量。在SQL的层面上,QuerySet对应SELECT语句,而*filters*对就类似WHERELIMIT的限制子句。

下面演示在交互模式中的基本操作:

>>> BlogArticles.objects
<django.db.models.manager.Manager object at 0x00000000039DA0B8>
>>> blogs = BlogArticles.objects.all()  #获取所有的文章
>>> blogs
<QuerySet [<BlogArticles: hello world>, <BlogArticles: Python全栈工程师>]>
>>> for blog in blogs:  # 遍历所有的文章
...   print(blog.id, blog.publish, blog.title, blog.author)
...
2 2020-03-04 15:25:56.363401+00:00 hello world admin
1 2020-03-04 14:57:00+00:00 Python全栈工程师 admin
>>> b = BlogArticles.objects.get(id=1) # 条件查找,查找 id=1 的文章
>>> b
<BlogArticles: Python全栈工程师>
>>> BlogArticles.objects.filter(author=admin) # 也是条件查找,查找 author=admin 的文章
<QuerySet [<BlogArticles: hello world>, <BlogArticles: Python全栈工程师>]>
>>> admin.blog_posts.all() # 反向查找 admin 用户发布的所有文章,这个好用!!!
<QuerySet [<BlogArticles: hello world>, <BlogArticles: Python全栈工程师>]>
>>>

操作三、修改保存对象:
使用实例的save()方法,等效于SQLUPDATE操作
在交互模式中的操作演示:

>>> b
<BlogArticles: Python全栈工程师>
>>> b.title = '工程师'
>>> b.title
'工程师'
>>> b.save() # 注意这里,没有这一句,保存不生效!!
>>>

操作四、删除对象:实例对象的delete()方法。该方法返回删除的数据库记录

>>> b.delete()
(1, {'blog.BlogArticles': 1})
>>>

更多内容参考官网:https://docs.djangoproject.com/zh-hans/3.0/topics/db/queries/

三、课程小结
  • 01、介绍了ORM语法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值