Django REST框架在呈现可浏览的HTML时会进行大量查询

2024-06-01 04:23:38 发布

您现在位置:Python中文网/ 问答频道 /正文

当将一个有models.ManyToManyField字段的模型Model1呈现给另一个数据库中有~50K个条目的模型Model2时,默认可浏览的HTML呈现大约需要3s来回答,而JSON呈现大约需要30ms。你知道吗

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

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

几乎需要2秒。你知道吗

当呈现https://github.com/encode/django-rest-framework/blob/522d45354633f080288f82ebe1535ef4abbf0b6e/rest_framework/templates/rest_framework/horizontal/select_multiple.html#L14的第14行时,会触发该查询

有没有办法阻止渲染执行如此昂贵的SQL请求?
在我们的例子中,我们并不期望仅仅呈现这些Model2条目中的id。你知道吗


Tags: 模型目的restid数据库jsonappsql