Django:你能否在不获取它的情况下判断一个相关字段是否已经被预获取?
- 论坛
- Django:你能否在不获取它的情况下判断一个相关字段是否已经被预获取?
8 浏览
Django:你能否在不获取它的情况下判断一个相关字段是否已经被预获取?
我想知道在Django中是否有一种方法可以判断相关字段是否已经通过prefetch_related()
等方式获取,而不实际获取它?
举个例子,假设我有以下模型:
class Question(Model): """表示问题的类。""" class Answer(Model): """表示问题的答案的类。""" question = ForeignKey('Question', related_name='answers')
通常,要获取问题的答案数量,最有效的方法是执行以下操作(因为Django文档指出count()
如果只需要计数,更有效):
# 注意: "question" 是 Question 类的一个实例。 answer_count = question.answers.count()
然而,在某些情况下,答案可能已经通过prefetch_related()
调用(或其他方式,比如之前迭代答案)获取。在这种情况下,执行以下操作将更有效(因为我们将跳过额外的count查询):
# 答案已经通过prefetch_related()获取 answer_count = len(question.answers.all())
所以我真正想做的是:
if question.answers_have_been_prefetched: # 这个存在吗? answer_count = len(question.answers.all()) else: answer_count = question.answers.count()
我使用的是Django 1.4,如果有关系的话请提前告知。谢谢。