Django ModelChoiceField和performance with>;100套表格
我在Django中有一个Django ModelChoiceField和performance with>;100套表格,django,django-forms,Django,Django Forms,我在Django中有一个CustomerForm,它包含一个带有Meters列表的表单集。客户有电表,电表位于客户拥有的设施内。该表单允许用户将仪表分配给客户的一个设施 仪表型号有一个字段: facility = models.ForeignKey( Facility, blank=True, null=True, default=None, related_name='meters', ) 表单集通过以下方式生成: meters_formset
CustomerForm
,它包含一个带有Meter
s列表的表单集。客户有电表,电表位于客户拥有的设施内。该表单允许用户将仪表分配给客户的一个设施
仪表
型号有一个字段:
facility = models.ForeignKey(
Facility,
blank=True,
null=True,
default=None,
related_name='meters',
)
表单集通过以下方式生成:
meters_formset_class = inlineformset_factory(
Customer,
Meter,
extra=0,
form=MeterInlineForm
)
并使用以下“MeterInlineForm”定义:
class MeterInlineForm(forms.ModelForm):
class Meta:
fields = (
'facility',
)
model = Meter
def __init__(self, *args, **kwargs):
super(MeterInlineForm, self).__init__(*args, **kwargs)
meter = kwargs.get('instance', None)
if meter != None:
if meter.customer != None:
self.fields['facility'].queryset = \
meter.customer.facilities.order_by('name')
这非常有效——直到我有一个拥有数百米的客户。然后,如Django文档中所述,modelcoocefield
:
允许选择单个模型对象,适用于
表示外键的。请注意,默认的小部件
当条目数增加时,ModelChoiceField变得不切实际
增加。您应该避免将其用于超过100个项目
问题:我应该如何解决此性能问题
更新:这是关于如何处理大型UpdateView的总结。对于detailview,我使用了一些AJAXy魔法,只获取用户可见的记录的数据。这对UpdateViews不起作用,因为用户可能会更新记录1和记录300,这两个记录可能不同时可见
更新:以下是仪表表单集表格的一部分示例:
更新:另一个用户解决问题的方法:您是否在管理中寻找类似于
原始id\u字段
的内容?我不这么认为。最后,我还希望有FK字段之外的其他输入。所以我真正需要的是一种将表单集数据“分块”显示的方法。