【发布时间】:2018-03-06 18:18:27
【问题描述】:
想知道一些 Django 查询性能/最佳实践。据我了解,QuerySets 是"lazy",正如文档所述,并且下面的三个查询在某个时间点被实际评估之前不会运行。这是一个正确的理解吗?下面的 sn-p 是针对同一个表查询同一字段的三个不同过滤器值的合理方法吗?
# General Education
general_education_assignments = FTEAssignment.objects.filter(
group_name='General Education'
)
# Specials
specials_assignments = FTEAssignment.objects.filter(
group_name='Specials'
)
# Dual
dual_assignments = FTEAssignment.objects.filter(
group_name='Dual Language'
)
除了我对以上内容的理解是否正确之外,我还想知道以下内容是否更有效(我认为不会)?另外,如果上面或下面的任何一个在风格上更适合 Django 或更“pythonic”?
# Get all assignments then filter
fte_assignments = FTEAssignment.objects.all()
# General Education
general_education_assignments = fte_assignments.filter(
group_name='General Education')
# Specials
specials_assignments = fte_assignments.filter(group_name='Specials')
# Dual
dual_assignments = fte_assignments.filter(group_name='Dual Language')
谢谢!
【问题讨论】:
-
您应该结帐digiqt.com/blog/django-best-practices-for-scalable-apps.html。它已发布查询性能优化和 Django 可扩展性最佳实践。
标签: python django django-models