【发布时间】:2017-05-02 15:27:19
【问题描述】:
这个问题get class name for empty queryset in django 举例说明了Django 中的QuerySet 具有model 属性
QuerySet API documentation 列出了方法,但我找不到列出其属性的地方
有没有办法找回它们,或者我在文档中找不到它们的位置?
【问题讨论】:
这个问题get class name for empty queryset in django 举例说明了Django 中的QuerySet 具有model 属性
QuerySet API documentation 列出了方法,但我找不到列出其属性的地方
有没有办法找回它们,或者我在文档中找不到它们的位置?
【问题讨论】:
它似乎是必要的,这并不好,但是在说明类定义是什么样子的行旁边有一个“源”链接。这导致了它的__init__ 方法:
def __init__(self, model=None, query=None, using=None, hints=None):
self.model = model
self._db = using
self._hints = hints or {}
self.query = query or sql.Query(self.model)
self._result_cache = None
self._sticky_filter = False
self._for_write = False
self._prefetch_related_lookups = []
self._prefetch_done = False
self._known_related_objects = {} # {rel_field, {pk: rel_obj}}
self._iterable_class = ModelIterable
self._fields = None
从这里我们可以看到self.model 和self.query 存在,但其他都是私有的,你不应该使用它们。
进一步滚动,还有属性queryset.db,如果现在运行查询,将使用该数据库。
【讨论】:
model 和 query 等属性是实现细节,而不是公共 API。虽然这两个属性一直存在,我怀疑它们会以任何破坏性的方式改变,但请记住这一点。