有没有一种有效的方法来获取另一个对象列表中的对象出现次数? Django的

时间:2018-02-06 07:13:52

标签: django model list-comprehension

在我的Django应用程序中,我有一些模型,包括但不限于:车辆,车辆制造和经销商。我创建了一个列表推导,用于创建具有车辆品牌的JSON对象,经销商库存中的品牌出现次数,例如在他们的库存中有6个丰田,以及我在Postgres DB中的ID。问题是我必须在数据库中的所有车辆上使用.count,并且属于该经销商,这会对数据库造成巨大损失。有没有办法加快速度,或优化它。我一直在网上寻找潜在的解决方案,但我现在正在枯竭。

查看功能

try:
    dealer = Dealer.objects.get(id=1)
except Exception as e:
    logging.error(e)

makes_map = [{
    'name': make.name,
    'count': Vehicle.objects.filter(vehicle_make=make, dealer=dealer).count(),
    'id': make.id
} for make in VehicleMake.objects.filter(
    name__in=Vehicle.objects.filter(dealer=dealer).values_list('vehicle_make__name', flat=True))
]

0 个答案:

没有答案