django我们可以在选择相关模型上预取相关字段吗?

时间:2019-05-09 09:57:06

标签: django django-orm

我需要获取每个事件的创建者最新图片。

例如,我有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的详细信息,我对此有疑问:

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.

0 个答案:

没有答案