在 django admin 里用 autocomplete_fields 给 ForeignKey, OneToOneField 字段 提速

发布时间:

django admin 的 编辑、新增 页面, ForeignKey, OneToOneField 这些个字段, 默认会用下拉框的方式加载数据, 如果 关联的字段 数据量非常大

就会导致 编辑、新增页面非常卡顿, 这是因为 他们会加载所有 下拉框内容

解决办法

在 admin里, 用 autocomplete_fields 来声明这个字段, 如下:

# 假设name字段 通过 ForeignKey, OneToOneField 关联到了另外一张非常大的表 # xxx/models.py class XXXDetail(models.Model): name = models.OneToOneField( Myname, on_delete=models.CASCADE, primary_key=True, related_name="details" ) # name = models.ForeignKey(Myname, on_delete=models.CASCADE, related_name="signatures") fetched_at = models.DateTimeField(auto_now_add=True) # xxx/admin.py @admin.register(XXXDetail) class XXXDetailAdmin(admin.ModelAdmin): autocomplete_fields = ("name",) list_display = ("id", "name", "fetched_at" )

这样 字段name 就是不是 下拉框了, 而是一个 需要输入关键词 来触发的 自动完成输入框, 新增的时候,他默认不会加载数据,输入关键词后,只会加载有限的 相关的数据,编辑的时候,他也只会加载相关的数据


2025 © 糊涂.