Django 我可以在select_related()字段上添加注释吗?

Django 我可以在select_related()字段上添加注释吗?,django,django-rest-framework,Django,Django Rest Framework,作为优化,我想注释每个车主拥有多少辆车 这似乎是一种奇怪的方式,但我使用的是Django Rest框架,序列化的Car有一个Owner字段,而Owner序列化包含用户拥有多少辆汽车的动态计算计数 这就是我想要的 cars=Car.objects.选择相关('owner')。注释(owner\uuu cars\u count=count('owner\uu Car')) …除了我想要的是cars[0]。owner.cars\u count而不是cars[0]。owner\u cars\u coun

作为优化,我想注释每个车主拥有多少辆车

这似乎是一种奇怪的方式,但我使用的是Django Rest框架,序列化的
Car
有一个
Owner
字段,而
Owner
序列化包含用户拥有多少辆汽车的动态计算计数

这就是我想要的

cars=Car.objects.选择相关('owner')。注释(owner\uuu cars\u count=count('owner\uu Car'))

…除了我想要的是
cars[0]。owner.cars\u count
而不是
cars[0]。owner\u cars\u count
。我想注释所有者,而不是汽车,以便DRF在序列化所有者时具有可用字段

Owner
中调出
对象
也不会起作用,因为
select\u related
不会在
Car
上使用
Owner
管理器

这非常类似于,但接受的答案与我已经在做的一样——在
SerializerMethodField
中计算每个记录的值。不可接受的答案描述了如何使用
预取相关的
选择相关的
执行此操作


由于这是DRF,或者我可以将注释从
Car.owner\u cars\u count
复制到
Car.owner.cars\u count
,然后再复制到嵌套的序列化程序?

您可以使用预取类:

从django.db.models导入计数,预取
cars=Car.objects.prefetch_相关(prefetch('owner',owner.objects.annotation('cars_count=count('Car')))
对于车内车:
打印(汽车、车主、汽车数量)

这很有趣。我不知道你可以
预取
外键——我以为它适用于很多关系
prefetch\u related('owner')
以两个查询结束,但它仍然比另一个更好。