Django REST框架在渲染可浏览的HTML时会产生巨大的查询

时间:2018-01-04 15:10:05

标签: python django django-rest-framework

将具有Model1字段的模型models.ManyToManyField呈现给数据库中包含~50K条目的另一个模型Model2时,默认的可浏览HTML呈现大约需要 3s < / strong>回答,而JSON渲染需要 30ms

打开Django调试工具栏,显示以下SQL请求:

SELECT `app_model2`.`id`, `app_model2`.`field1` ... FROM `app_model2`;

本身几乎 2s

在渲染https://github.com/encode/django-rest-framework/blob/522d45354633f080288f82ebe1535ef4abbf0b6e/rest_framework/templates/rest_framework/horizontal/select_multiple.html#L14

的第14行时会触发该查询

有没有办法阻止渲染执行如此昂贵的SQL请求? 在我们的情况下,我们不希望呈现的内容不仅仅是来自这些id条目的Model2

1 个答案:

答案 0 :(得分:0)

我假设你在django-admin中使用它,那里你有一个多选字段。如果是这种情况,您可以使用raw_id_fields来阻止获取所有选项。 https://docs.djangoproject.com/en/2.0/ref/contrib/admin/