我想在用select_related
获取的字段中添加注释。我知道您可以使用prefetch_related
来做到这一点:
vote_qs = Vote.objects.annotate(my_count=Count('some_related_objects'))
queryset = MyModel.objects.prefetch_related(
Prefetch('votes', queryset=vote_qs)
)
我喜欢做的事
user_qs = User.objects.annotate(my_count=Count('some_related_objects'))
queryset = MyModel.objects.select_related(
Select('user', queryset=user_qs)
)
Django不支持。但是我该怎么做,并尽可能避免使用原始SQL? (我无法通过Google找到任何信息。)
为澄清起见,这可能是一种解决方法,但后来我无法再执行其他过滤器或其他操作了:
queryset = list(
MyModel.objects
.annotate(my_count=Count('user__some_related_objects'))
.select_related('user')
)
for obj in queryset:
obj.user.my_count = obj.my_count