Мне нужно получить последнее изображение создателя для каждого события.
Например, у меня есть 3 модели:
class Event(..):
create_by = ForeignKey(User, related_name='events_set')
class User(..):
...
class ProfileImage(..):
user = ForeignKey(User, related_name='profile_images_set')
image = ImageField(..)
Так что мне нужно получить подробную информацию о событии, яу меня есть такая хитрость:
Event.objects.all().prefetch_related('..').select_related('created_by')
Проблема в том, что мне также нужно получить последнее изображение создателя события.Я пытался Prefetch
, но он работает только для управления prefetch_related
.Примерно так:
Event.objects.all().prefetch_related('..').select_related(Prefetch('created_by', queryset=User.objects.all().prefetch_related(Prefetch('profile_images_set', queryset=ProfileImages.objects.filter(id=OuterRef('pk').latest('pk'))))
ОБНОВЛЕНИЕ Текущий рабочий набор запросов:
Event.objects.all().prefetch_related(.., 'created_by__profile_images_set')
Но он выбирает все изображения создателя.Также я попытался:
Event.objects.all().prefetch_related(..,Prefetch('created_by__profile_images_set',queryset=ProfileImage.objects.filter(pk=OuterRef('pk')).latest('pk')))
Но я получил ошибку: ValueError: This queryset contains a reference to an outer query and may only be used in a subquery.