我需要获取每个事件的创建者最新图片。
例如,我有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.