django我们可以在选择的相关模型上预取相关字段吗?
我需要为每个活动获取创建者的最新图像 例如,我有3种型号:django我们可以在选择的相关模型上预取相关字段吗?,django,django-orm,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(..) 所以我需要得到关于
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')
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('..').select_related('created_by')
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:此查询集包含对外部查询的引用,只能在子查询中使用。
您能否尝试Event.objects.all().prefetch\u related('created\u by\u image')
?我不明白你为什么要得到最新的消息user@Benbb96哦,有一个错误,我需要获取创建者的最新图像,我更改了查询集