Django:RelatedManager 对象是如何实例化的?
Posted
技术标签:
【中文标题】Django:RelatedManager 对象是如何实例化的?【英文标题】:Django: How is a RelatedManager object instantiated? 【发布时间】:2018-09-06 14:56:29 【问题描述】:假设我有两个models
:Book
和Author
。
如果我现在添加一个ForeignKey field
到Book
将它连接到Author
,并实例化一个Book object
- 那么我也可以通过Book object
访问它连接到的Author object
(通过.book_set
,如果没有指定related_name
)。根据我阅读文档的理解,此访问权限是通过Author object
上的Related Manager object
提供的。
RelatedManager-object
是什么时候创建的?或者它已经在每个Author object
上都有一个object
,但是在实例化一个新的Book
时连接到每个Book 对象?如果是这样,它如何连接到Book object?
据我所知,文档中没有提到这一点。
在文档中:
如果模型有外键,外键模型的实例将 有权访问返回第一个的所有实例的 Manager 型号。
【问题讨论】:
您为什么需要这些信息并尝试查看代码? 【参考方案1】:你可以问 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>
【讨论】:
以上是关于Django:RelatedManager 对象是如何实例化的?的主要内容,如果未能解决你的问题,请参考以下文章
Django RelatedManager 的 .create() 用法?