从数据库读取数据
以下方法允许您从数据库加载数据。
-
get(*args, **kwargs) -> 模型
-
get_or_create(_defaults: Optional[Dict[str, Any]] = None, *args, **kwargs) -> Tuple[Model, bool]
-
first(*args, **kwargs) -> Model
-
all(*args, **kwargs) -> List[Optional[Model]]
-
iterate(*args, **kwargs) -> AsyncGenerator[Model]
-
模型
- Model.load()方法
-
查询集代理
-
QuerysetProxy.get(*args, **kwargs)
方法 QuerysetProxy.get_or_create(_defaults: Optional[Dict[str, Any]] = None, *args, **kwargs)
方法QuerysetProxy.first(*args, **kwargs)
方法QuerysetProxy.all(*args, **kwargs)
方法
得到
get(*args, **kwargs) -> 模型
从数据库中获取满足 kwargs 设置条件的第一行。
如果没有设置条件,它将返回数据库中按 pk 列排序的最后一行。
传递一个条件实际上是调用下面描述的filter(*args, **kwargs)方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
!!!警告 如果没有行满足条件,则会引发 NoMatch 异常。
1 |
|
获取或无
get_or_none(*args, **kwargs) -> Model
与上面描述的 get 完全相同,但如果没有找到与条件匹配的数据库记录,则返回 None,而不是引发异常。
获取或创建
get_or_create(_defaults: Optional[Dict[str, Any]] = None, *args, **kwargs) -> Tuple[Model, bool]
创建和获取方法的组合。
尝试获取满足条件的行,如果引发 NoMatch 异常,则会使用给定的 kwargs 和 _defaults 创建一个新行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
!!!警告尽管是数据库中的等效行,但上面示例中的 album 和 album2 是 2 个不同的 python 对象!更新其中之一不会刷新第二个,直到您显式从数据库加载()新数据。
注意,如果你想创建一个新对象,你要么必须传递 pk 列值,要么 pk 列必须设置为自动增量
第一的
first(*args, **kwargs) -> Model
从数据库中获取按主键列升序排序的第一行。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
全部
all(*args, **kwargs) -> List[Optional["Model"]]
对于设置的过滤器选项,返回给定模型的数据库中的所有行。
传递 kwargs 是一种快捷方式,相当于调用 filter(*args, **kwargs).all()。
如果没有满足条件的行,则返回空列表。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
迭代
iterate(*args, **kwargs) -> AsyncGenerator["Model"]
返回给定模型的数据库中所有行的异步可迭代生成器。
传递 args 和/或 kwargs 是一种快捷方式,等于调用 filter(*args, **kwargs).iterate()
。
如果没有满足条件的行,则返回空的异步生成器。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
!!!警告 使用 iterate() 会导致之前的 prefetch_lated() 调用被忽略;因为这两种优化放在一起没有意义。
1 |
|
模型方法
每个模型实例都有一组方法来保存、更新或加载自身。
加载
您可以通过调用load()方法加载ForeignKey相关模型。
load() 可用于从数据库刷新模型(如果它被其他进程更改)。
!!!tip 阅读有关模型方法中的 load() 方法的更多信息
QuerysetProxy 方法
当直接访问相关的ManyToMany字段以及ReverseForeignKey时,返回相关模型的列表。
但同时它公开了 QuerySet API 的子集,因此您可以直接从父模型过滤、创建、选择相关模型等。
得到
工作原理与上面的 get 函数完全相同,但允许您从关系的另一端获取相关对象。
!!!tip 要了解有关 QuerysetProxy 的更多信息,请访问 querysetproxy 部分
获取或无
与上面描述的 get 完全相同,但如果没有找到与条件匹配的数据库记录,则返回 None,而不是引发异常。
!!!tip 要了解有关 QuerysetProxy 的更多信息,请访问 querysetproxy 部分
获取或创建
与上面的 get_or_create 函数完全相同,但允许您从关系的另一端查询或创建相关对象。
!!!tip 要了解有关 QuerysetProxy 的更多信息,请访问 querysetproxy 部分
第一的
与上面的第一个函数完全相同,但允许您从关系的另一端查询相关对象。
!!!tip 要了解有关 QuerysetProxy 的更多信息,请访问 querysetproxy 部分
全部
与上面所有功能完全相同,但允许您从关系的另一端查询相关对象。
!!!tip 要了解有关 QuerysetProxy 的更多信息,请访问 querysetproxy 部分