Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django ModelChoiceField和performance with>;100套表格_Django_Django Forms - Fatal编程技术网

Django ModelChoiceField和performance with>;100套表格

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

我在Django中有一个
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字段之外的其他输入。所以我真正需要的是一种将表单集数据“分块”显示的方法。