【问题标题】:Django form eager load related objects before render templateDjango表单在渲染模板之前急切加载相关对象
【发布时间】:2014-06-16 07:26:29
【问题描述】:
我在渲染模板时遇到了性能问题,因为当我渲染 N 个表单时,对于每个表单,它通过外键和查询加载一个相关对象。
这是我的情况
我有一个属于玩家模型(一对多)的统计模型。在 change_view 模板中,我呈现 N 个统计表单,并且为每个表单呈现相关的 Player(名字、姓氏)。
这是简单的统计表格
class StatisticForm(ModelForm):
class Meta:
model = Statistic
我怎样才能以统计形式预先加载播放器?
【问题讨论】:
标签:
python
django
django-forms
django-templates
【解决方案1】:
您可以使用ModelFormSet 解决此问题,正如您所说:“我呈现 N 个统计表格...”并立即获取相关对象:
formset = StatisticFormSet(queryset=Statistic.objects.select_related('player').all())
注意这里的关键不是表单集本身,而是在创建查询集时使用 .select_related('player') 。 ModelFormSet 的使用只是为了更轻松地处理所有这些表单的建议。
希望对您有所帮助。