Django ModelFormSet是否占用了我所有的内存?类似于内存泄漏
我有一个Django的观点,其开头如下:Django ModelFormSet是否占用了我所有的内存?类似于内存泄漏,django,memory-leaks,django-forms,Django,Memory Leaks,Django Forms,我有一个Django的观点,其开头如下: def MyView(request): formset = MyModelFormSet(request.POST) ... 显然,视图中的代码比我显示的要多。我的问题特定于MyModelFormSet。我的问题是Django在调用视图时使用了所有内存* 是否有可能MyModelFormSet正在从数据库中提取每个“MyModel”?是否需要为MyModelFormSet提供queryset参数 *从技术上讲,这不是内存泄漏,但在我看
def MyView(request):
formset = MyModelFormSet(request.POST)
...
显然,视图中的代码比我显示的要多。我的问题特定于MyModelFormSet
。我的问题是Django在调用视图时使用了所有内存*
是否有可能MyModelFormSet
正在从数据库中提取每个“MyModel
”?是否需要为MyModelFormSet
提供queryset
参数
*从技术上讲,这不是内存泄漏,但在我看来,它最初似乎是一个内存泄漏,因此将其称为内存泄漏可能有助于其他人找到这个问题和解决方案。很抱歉回答我自己的问题。我在其他地方找不到明确指出的这些信息,希望这个Q/A能对其他人有所帮助 Yes,
MyModelFormSet
正在从数据库中提取每个“MyModel
”。我在数据库中有15000个MyModel
s的测试环境中验证了这一点。我观察到以下情况:
1) 我在一篇HTTP文章中只提交了3个MyModels表单。职务结束后:
2) formset.forms
包含3个MyModelForm
s
3) len(formset.\u queryset)
等于15000<代码>表单集。_queryset包含数据库中每个MyModel
的列表。Django已经提取了每个MyModel
,并将其存储在内存中
解决方案是提供一个queryset
参数。有关这方面的更多信息,请参阅
此测试使用Django版本1.4.5执行