Django,哪里有预取的GenericForeignKey?

时间:2017-01-26 15:45:10

标签: django prefetch

qs = Foo.objects.prefetch_related('items', 'content_object')

我可以看到qs [0] ._ prefetched_objects_cache包含'items'(反向查找外键)

但_prefetched_objects_cache中没有'content_object'。

尽管doc说prefetch_related与GenericForeignKey一起使用。 (https://docs.djangoproject.com/en/1.9/ref/models/querysets/#prefetch-related

那么预存的content_object存储在哪里?

1 个答案:

答案 0 :(得分:1)

注意the docs说:

  

例如,仅当查询限制为一个ContentType时,才支持预取GenericForeignKey引用的对象。

据我了解,prefetch_related适用于以下查询集,其中所有通用外键都指向Bar模型。

bars = ContentType.objects.get(app_label="myapp", model="bars")
qs = Foo.objects.filter(content_type=bars).prefetch_related('items', 'content_object')