使用inlineformset\u factory(和crispy)时,SQL查询太多/呈现速度慢

2024-09-30 02:36:55 发布

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

带有屏幕截图的示例项目:https://github.com/nspo/slowformsets-django-example

与作者、书籍和出版商合作的项目。你知道吗

有一个更新作者的视图,您可以在其中更改作者拥有的所有书籍以及添加新书。书单是用inlineformset\u工厂创建的。书籍还有一个外键引用(publisher),可以在BookForm中选择。你知道吗

渲染:

{% crispy form %}
{% crispy formset formset.form.helper %}

问题:

  • 对于每一种图书形式,似乎都有对所有出版商的要求。你知道吗

我有点理解对发布者的请求,因为它们可以在隐式模型选项字段中选择。但是我不能用预回迁加速吗?我觉得作者的例子在第12行和第13行通过了视图.py可能被“复制”以便忘记任何预取的数据?你知道吗

如果无法直接解决ModelChoiceField限制的b/c问题,那么在我的情况下,如果在添加图书(但仅显示)后无法更改出版商,也可以这样做。不知道如何做到这一点,虽然没有很多变化。你知道吗


Tags: 项目httpsformgithubcom视图示例屏幕
1条回答
网友
1楼 · 发布于 2024-09-30 02:36:55

我们看不到任何使这种游戏成为猜谜游戏的代码。您提到了与预回迁有关的内容,但它并没有出现在您链接到的代码中。一般来说,我会这样做

queryset=Book.objects.prefetch_related('publisher').filter(author=id_author)
BookInlineFormSet = inlineformset_factory(Author, Book, form=BookForm, extra=2, can_delete=False)
bookformset = BookInlineFormSet(instance=author, prefix="main", queryset=queryset)

而且我猜每本书都有一个出版商。所以它不是预取相关的,而是选择相关的。你知道吗

相关问题 更多 >

    热门问题