0

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

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

显然,视图中的代码比我展示的要多。我的问题是特定于MyModelFormSet. 我的问题是 Django 在调用视图时正在使用所有内存*。

是否有可能从数据库MyModelFormSet中提取每个“ MyModel”?我需要提供一个queryset论据MyModelFormSet吗?

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

4

1 回答 1

2

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

的,正在从数据库MyModelFormSet中提取每个“ ”。MyModel我在数据库中有 15,000MyModel秒的测试环境中验证了这一点。我观察到以下情况:

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

2)formset.forms包含 3MyModelForm秒。

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

解决方案是提供一个queryset论据。您可以在Django 文档中阅读更多相关信息。

此测试是使用 Django 版本 1.4.5 执行的。

于 2013-07-12T17:51:04.690 回答