Django 4.2 复习笔记(四)数据的查询Django的ORM

作者:J.sky · 发表于:
2023-05-25T08:41:44.000000Z
· 更新于:
2023-08-13T22:54:57.602618Z
· Tag: Django

Django的ORM操作非常简答,几乎把所有你能想到的数据库的操作都封装了,即便没有你需要的,也可以使用原生的SQL语句进行查询。

创建模型

为了测试查询,先创建一个简单的Django模型:

myapp/models.py

class Article(models.Model):
    title = models.CharField(max_length=128,verbose_name='文章标题')
    content = models.TextField(verbose_name='文章内容')

其他还有一些操作:配置文件里需要添加应用,连接数据库和生成数据库的表,这些操作之前都有介绍,参考:Django 4.2 复习笔记(二)编写和调试Model模型

增删改查(CRUD)

终端下敲入:

$ python manage.py shell

开始测试Django的增删改查(CRUD)

添加数据

>>> from myapp.models import Article
>>> a = Article(title="测试文章的标题",content="哈哈,我来测试一下......")
>>> a.save()
>>> a.title
'测试文章的标题'
>>> a.id
2

更新数据

>>> a.title="修改后的标题"
>>> a.save()
>>> a.title
'修改后的标题'
>>>

删除数据

>>> a.delete()

此时数据已经删除,在表中已不存在。

查询

数据的查询的需求有时是非常复杂的,这里只列举一些常用的查询。

Django的ORM数据操作常用函数:

all()函数,返回符合条件的全部记录。

arts = Article.objects.all()

filter()函数,返回指定条件的记录。filter后面的括号内为过滤条件,类似于SQL中语句where后面的条件语句。

>>> b = Article.objects.filter(title='aaa')
>>> len(b)
1
>>>

用 get() 检索单个对象.

c = Article.objects.get(title='aaa')

order_by()函数,按照order_by后面括号中的字段排序。

exclude(**kwargs) 返回一个新的 QuerySet,包含的对象 不 满足给定查询参数。

总结

Django查询还有很多方法,这里就不一一介绍了,请参考官方文档:

执行查询