【发布时间】:2022-09-26 16:14:36
【问题描述】:
在 django ORM 中使用 Q 过滤条件或简单地获取未过滤的对象并在 python 中进行比较可以提供更好的性能。
employee_qs = employee.objects.filter(state=States.ACTIVE, topic_assn__topic_id=instance.ss_topic_id).select_related(\'c_data\').filter(
Q(c_data__is_null=True) | Q(c_budget__gt=F(\'c_data__budget_spent\') + offset_amt))
V/s
employee_qs = employee.objects.filter(state=States.ACTIVE, topic_assn__topic_id=instance.ss_topic_id).select_related(\'c_data\')
for employee in employee_qs:
if not employee.c_data or float(employee.budget)-employee.c_data.budget_spent > offset_amt:
#do something...
这两个选择中哪一个在性能方面会更好?
标签: python django django-models django-orm