You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在NestedTabularInline中使用ModelChoiceField的最佳实践及性能与数据回显问题求助

在NestedTabularInline中使用ModelChoiceField的最佳实践及性能与数据回显问题求助

各位大佬好,最近碰到个头疼的性能问题,想请教下大家有没有靠谱的解决方案:

最近我发现自己做的网页详情页加载速度特别慢,查了半天原因,终于定位到是NestedTabularInline里的ModelChoiceField搞的鬼——当这个字段关联的数据库实例数量特别大时,它会反复执行SELECT *的全表查询,直接把页面拖垮了。举个直观的例子:如果这个inline里有50个实例,就会触发50次全表查询,加载速度简直没法看。

我自己先试了几个办法:

  • 一开始把这个ModelChoiceField的queryset设成objects.none(),性能问题倒是解决了,但新问题又来了:编辑页面的时候,原本应该自动选中的关联数据完全没反应,根本回显不了。
  • 后来我想着在表单的__init__方法里动态设置初始值,结果因为queryset是空的,这个操作完全不起作用。

附上我用到的表单代码片段:

class CustomDuplicateItemInlineForm(forms.ModelForm):
    # extra fields
    action = forms.CharField(
        label='Action Duplicate',
        required=False,
        widget=DuplicateLinkWidget(),
    )

    class Meta:
        abstract = True

想请教下各位大佬,在NestedTabularInline中使用ModelChoiceField时,有没有什么最佳实践能兼顾性能(避免大量重复查询)和数据回显(编辑时正常选中原有数据)呢?麻烦大家支支招,万分感谢!

备注:内容来源于stack exchange,提问作者Doan Van Thang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 11:13:04