django мы можем предварительно выбрать связанное поле в выбранной родственной модели? - PullRequest
0 голосов
/ 09 мая 2019

Мне нужно получить последнее изображение создателя для каждого события.

Например, у меня есть 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.

...