【问题标题】: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 的使用只是为了更轻松地处理所有这些表单的建议。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-25
      • 2013-10-10
      • 1970-01-01
      • 2018-02-08
      • 2013-06-10
      • 2019-05-28
      相关资源
      最近更新 更多