【发布时间】:2015-09-23 08:52:04
【问题描述】:
当您提交数据时,Django 的内联表单集所做的第一件事就是在循环中对其每个表单进行触发验证:
for i in range(0, self.total_form_count()):
form = self.forms[i]
self._errors.append(form.errors)
在表单集是包含各个表单行的表格的图片中,验证是逐行进行的。如果表单中有ModelChoiceField,则每行中选择的值将在ModelChoiceField的查询集中查找,导致每行至少有一个额外的db命中。
key = self.to_field_name or 'pk'
value = self.queryset.get(**{key: value})
现在,如果所有这些查询集都相同(和我的一样),这似乎是一种浪费。查询集不会逐行变化,有什么办法缓存吗?
更一般地说,在列中进行验证是否会更有效,例如,首先从表单的类中收集字段,然后对每个字段(列)的所有表单(行)进行循环?
【问题讨论】:
标签: django validation formset