Django ModelFormSet是否耗尽了我所有的记忆?类似于内存泄漏

时间:2013-07-12 17:30:07

标签: django memory-leaks django-forms

我有一个Django视图,开头如下:

def MyView(request):
    formset = MyModelFormSet(request.POST)
    ...

显然,视图中的代码多于我所显示的代码。我的问题是针对MyModelFormSet的。我的问题是Django在调用视图时使用了所有内存*。

MyModelFormSet是否可能从数据库中提取每个“MyModel”?我是否需要向queryset提供MyModelFormSet参数?

*这在技术上不会是内存泄漏,但它最初对我来说似乎是一个,因此将其称为内存泄漏可能有助于其他人找到这个问题和解决方案。

1 个答案:

答案 0 :(得分:1)

很抱歉回答我自己的问题。我无法在其他任何地方找到清楚指出的信息,希望这个Q / A对其他人有帮助。

MyModelFormSet从数据库中提取每个“MyModel”。我在测试环境中对此进行了验证,该环境在数据库中有15,000 MyModel秒。我观察到以下内容:

1)我在HTTP帖子中只提交了3个MyModels表单。发帖后:

2)formset.forms包含3 MyModelForm s。

3)len(formset._queryset)等于15,000。 formset._queryset包含数据库中每个MyModel的列表。 Django已将每个MyModel拉出并存储在内存中。

解决方案是提供queryset参数。您可以在Django documentation

中详细了解相关信息

此测试使用Django 1.4.5版进行。