【发布时间】:2019-09-16 15:07:36
【问题描述】:
我对 django-querysets 中的惰性求值存有疑问。
这是我的 django 查询:
方法一:
tyres_in_car = Car.objects.filter(serial_no__startswith('AB')).values('tyre__type')
在这个查询中,我使用.values()(轮胎类型)访问外键值。
我使用的另一种方法是:
方法二:
第一行:tyres = Car.objects.filter(serial_no__startswith('AB'))
第二行:all_tyres = tyres.tyre.all()
第 3 行:tyres_in_car = [ ty.type for ty in all_tyres ]
因为,我在这两种方法中都使用了.values(),所以在这两种情况下,查询是否只命中数据库一次(因为方法 2 的延迟评估)或者在方法 2 的情况下它命中两次。
从代码可读性的角度来看,我认为方法2看起来更合适。
【问题讨论】: