python - Django:RelatedManager 对象是如何实例化的?

标签 python django model

假设我有两个 models :BookAuthor .

如果我现在添加一个 ForeignKey fieldBook将其连接到 Author ,并实例化一个 Book object - 那么我也可以访问该 Book object通过 Author object它连接到(通过 . book_set ,如果没有指定 related_name )。根据我阅读文档的理解,此访问是通过 Related Manager object 提供的。在 Author object .

那是什么时候RelatedManager-object创建?或者它已经是 object在每个 Author object ,但在实例化一个新的 Book 时连接到每个 Book 对象?如果是这样,它如何连接到 Book object?
据我所知,文档中没有提到这一点。

在文档中:

If a model has a ForeignKey, instances of the foreign-key model will have access to a Manager that returns all instances of the first model.

最佳答案

你可以问 Django,它会给你一些跟踪:

>>> Author.book_set
<django.db.models.fields.related_descriptors.ReverseManyToOneDescriptor object at 0x7f41aa1920f0>
>>> Author.objects.first().book_set
<django.db.models.fields.related_descriptors.create_reverse_many_to_one_manager.<locals>.RelatedManager object at 0x7f41a9e46828>

关于python - Django:RelatedManager 对象是如何实例化的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49525761/

相关文章:

python - 是否可以在 Django 模板语言中定位 html 元素的值?

python - 有条件的 Django 模型创建

javascript - 将录制的音频从浏览器发送到 django 服务器并另存为 .wav

node.js - SLC环回: Using model instance from within a model hook

cakephp - 在 CakePHP 中操作 JOINS 的顺序

Python-我应该为指数型数据使用什么颜色图方案?

python - 如何卸载使用 distutils 安装的 python 包?

python - 使用 C 扩展构建/测试 Python 项目

python - 无法定义主键

php - last_query() 在 Rumbelow 的 CodeIgniter 的 My_Model 中返​​回 false