Django:加载使用外键加载的对象的受限字段集

2024-09-29 01:26:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码,使用Django ORM

    routes =Routes.objects.filter(scheduleid=schedule.id).only('externalid')
    t_list = [(route.externalid, route.vehicle.name) for route in routes])

而且速度非常慢,因为车辆对象很大(几十个字段,我无法更改,它来自一个遗留数据库)。创建Vehicle对象花费了大量的时间,而我只需要这个对象的name字段。在

有没有更有效的方法来获取t_list?我正在寻找类似only()的东西来通过外键访问对象。在

编辑: 解决方案如下:

^{pr2}$

有没有类似的东西?在


Tags: 对象django代码nameonlyobjectsormfilter
2条回答

我想你应该能做到。警告:未使用本地模型进行测试。生成的查询看起来不错。在

routes = Routes.objects.select_related('vehicle').filter(**conditions).only(
            'externalid', 'vehicle__name')

为了实现这一点,应该在Routes模型中声明一个vehicle外键字段。这是因为select_related()只遵循向前关系。在

您可以尝试以下操作:

Routes.objects.filter(scheduleid__id=schedule.id).values('externalid', 'vehicle__name')

相关问题 更多 >