什么是 Django 查询集?

发布于 2024-10-11 16:59:07 字数 557 浏览 5 评论 0原文

当我这样做时,

>>> b = Blog.objects.all()
>>> b

我得到这样的信息:

>>>[<Blog: Blog Title>,<Blog: Blog Tile>]

当我查询 b 是什么类型时,

>>> type(b)

我得到这样的信息:

>>> <class 'django.db.models.query.QuerySet'>

这是什么意思?它是像 dictlist 等数据类型吗?

我将不胜感激如何构建像QuerySet这样的数据结构的示例。

我想知道 Django 如何构建该QuerySet(血淋淋的细节)。

When I do this,

>>> b = Blog.objects.all()
>>> b

I get this:

>>>[<Blog: Blog Title>,<Blog: Blog Tile>]

When I query what type b is,

>>> type(b)

I get this:

>>> <class 'django.db.models.query.QuerySet'>

What does this mean? Is it a data type like dict, list, etc?

An example of how I can build data structure like a QuerySet will be appreciated.

I would want to know how Django builds that QuerySet (the gory details).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

听风念你 2024-10-18 16:59:07

django 查询集 就像它的名字所说的那样,基本上是 ( sql)查询,在上面的示例中 print(b.query) 将显示从 django filter 调用生成的 sql 查询。

由于查询集是惰性,因此数据库查询不会立即完成,而是仅在以下情况下完成:需要 - 当查询集被评估时。例如,如果您在打印时调用它的 __str__ 方法,如果您对它调用 list() ,或者,最常见的是,您迭代它( 用于 b.. 中的帖子)。这种惰性应该可以帮助您避免执行不必要的查询,并且还允许您链接查询集和过滤器(您可以根据需要经常过滤查询集)。

A django queryset is like its name says, basically a collection of (sql) queries, in your example above print(b.query) will show you the sql query generated from your django filter calls.

Since querysets are lazy, the database query isn't done immediately, but only when needed - when the queryset is evaluated. This happens for example if you call its __str__ method when you print it, if you would call list() on it, or, what happens mostly, you iterate over it (for post in b..). This lazyness should save you from doing unnecessary queries and also allows you to chain querysets and filters for example (you can filter a queryset as often as you want to).

小傻瓜 2024-10-18 16:59:07

QuerySet 代表数据库中的对象集合。它可以有零个、一个或多个过滤器。过滤器根据给定参数缩小查询结果范围。在 SQL 术语中,QuerySet 相当于 SELECT 语句,过滤器是限制子句,例如 WHERE 或 LIMIT。

https://docs.djangoproject.com/en/1.8/topics/db /查询/

A QuerySet represents a collection of objects from your database. It can have zero, one or many filters. Filters narrow down the query results based on the given parameters. In SQL terms, a QuerySet equates to a SELECT statement, and a filter is a limiting clause such as WHERE or LIMIT.

https://docs.djangoproject.com/en/1.8/topics/db/queries/

情丝乱 2024-10-18 16:59:07

QuerySet 是给定模型的对象列表,QuerySet 允许您从数据库读取数据

A QuerySet is a list of objects of a given model, QuerySet allow you to read data from database

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文