Django 的 ORM 是创建 SQL 去查询和操作数据库的一个 Python 式的方式。
通过 django 创建的数据库模型
续
生成的 mysql 数据库表
在 Django 中 model 是数据的单一、明确的信息来源。它包含了存储的数据的重要字段和行为。通常,一个模型(model)映射到一个数据库表。
基本情况:
每个模型都是一个 Python 类,它是 django.db.models.Model 的子类。
模型的每个属性都代表一个数据库字段。
综上所述,Django 提供了一个自动生成的数据库访问 API。
在项目 manage.py 目录下,执行 python manage.py shell 进入 shell
注:Tb 为 模型 model 的 Class 名,比如 Post.objects.all()
<1> Tb.objects.all()
查询所有结果。
<2> Tb.objects.filter(**kwargs)
它包含了与所给筛选条件相匹配的对象。
<3> get(**kwargs)
返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。
<4> Tb.objects.exclude(**kwargs)
它包含了与所给条件不匹配的对像。
<5> Tb.objects.values(*field)
返回一个 ValueQuerySet — 一个特殊的 QuerySet,运行后得到的并不是一系列 model 的实例化对象,而是一个可迭代的字典序列。
<6> Tb.objects.values_list(*field)
它与 values() 非常相似,它返回的是一个元组序列,values 返回的是一个字典序列。
<7> Tb.objects.order_by(*field)
对查询结果排序
<8> Tb.objects.reverse()
对查询结果反向排序,请注意 reverse() 通常只能在具有已经定义顺序的 QuerySet 上调用(在 model 类的 Meta 中指定 ordering 或调用 order_by() 方法)。
<9> Tb.objects.distinct()
从返回结果中剔除重复记录(如果查询跨越多个表,可能在计算 QuerySet 时得到重复的结果。此时可以使用 distinct(),注意只有在 PostgreSQL 中支持按字段去重。)
<10> Tb.objects.count()
返回数据库中匹配查询(QuerySet)的对象数量。
<11> Tb.objects.first()
返回第一条记录。
<12> Tb.objects.last()
返回最后一条记录。
<13> Tb.objects.exists()
如果 QuerySet 包含数据,就返回 True,否则返回 False。