2017-01-26 2 views
0
qs = Foo.objects.prefetch_related('items', 'content_object') 

Я могу видеть QS [0] ._ prefetched_objects_cache содержит 'элементы' (который является обратный поиск внешнего ключа)Django, где предварительно выбран GenericForeignKey?

Но нет никакого 'content_object' в _prefetched_objects_cache.

Хотя doc говорит, что prefetch_related работает с GenericForeignKey. (https://docs.djangoproject.com/en/1.9/ref/models/querysets/#prefetch-related)

Итак, где хранятся предварительно загруженные объекты content_object?

ответ

0

Примечание the docs говорят:

Например, предварительная выборка объектов, на которые ссылается GenericForeignKey поддерживается только если запрос ограничен одним ContentType.

Как я понимаю, что prefetch_related будет работать на следующей QuerySet, где все общие внешние ключи указывают на Bar модели.

bars = ContentType.objects.get(app_label="myapp", model="bars") 
qs = Foo.objects.filter(content_type='bars', prefetch_related('items', 'content_object') 
Смежные вопросы